Reputation: 6363
I was wondering if you could list/examine what databases/objects are available to you in the Rails console. I know you can see them using other tools, I am just curious. Thanks.
Upvotes: 204
Views: 192212
Reputation: 1529
You can use rails dbconsole
to view the database that your rails application is using. It's alternative answer rails db
. Both commands will direct you the command line interface and will allow you to use that database query syntax.
From the dbconsole
command line:
\l
Lists available databases\d
Lists tables available in the
current database\?
(help) lists the many options for examining
other sorts of objectsUpvotes: 5
Reputation: 9768
You are probably seeking:
ActiveRecord::Base.connection.tables
and
ActiveRecord::Base.connection.columns('projects').map(&:name)
You should probably wrap them in shorter syntax inside your .irbrc
.
Upvotes: 410
Reputation: 52248
Run this:
Rails.application.eager_load!
Then
ActiveRecord::Base.descendants
To return a list of models/tables
Upvotes: 1
Reputation: 749
I hope my late answer can be of some help.
This will go to rails database console.
rails db
pretty print your query output
.headers on
.mode columns
(turn headers on and show database data in column mode )
Show the tables
.table
'.help' to see help.
Or use SQL statements like 'Select * from cars'
Upvotes: 35
Reputation: 6363
Its a start, it can list:
models = Dir.new("#{RAILS_ROOT}/app/models").entries
Looking some more...
Upvotes: -3
Reputation: 4644
To get a list of all model classes, you can use ActiveRecord::Base.subclasses
e.g.
ActiveRecord::Base.subclasses.map { |cl| cl.name }
ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" }
Upvotes: 9