# Brought to you by Ruby Starters - https://starters.wolfgangrittner.dev # Author: Wolfgang Rittner require "bundler/inline" gemfile do source "https://rubygems.org" gem "activerecord" gem "pg" end require "active_record" ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "ruby_starters_development") ActiveRecord::Base.logger = Logger.new(STDOUT) # Get list of tables in the database tables = ActiveRecord::Base .connection .execute("select * from pg_catalog.pg_tables where schemaname = 'public'") .pluck('tablename') # Define ActiveRecord Model classes for all tables puts "\n\nAvailable Models (and tables):\n\n" tables.each do |table, model: table.classify| puts "#{model} (#{table})" Object.const_set(model, Class.new(ActiveRecord::Base)) end # When connecting to a Rails generated db, chances are there is a schema_migrations table: puts SchemaMigration.last.inspect # Suppose there is a users table we can query that: puts User.where(first_name: "Wolfgang").count # WE can create records, too! # But mind you are bound by db constraints only, # there are no validations unless you defined them here: # User.create!(email: "starters@wolfgangrittner.dev", first_name: "Wolfgang")