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.
-
2that's what script/dbconsole is for thoughhgmnz– hgmnz2010-01-20 00:25:48 +00:00Commented Jan 20, 2010 at 0:25
-
Yes, that drops you into mysql (or whatever). For some stranger reason I want to list columns/tables etc from regular console. I am thinking that it might require custom made ruby methods to do such a thing.rtfminc– rtfminc2010-01-20 02:19:41 +00:00Commented Jan 20, 2010 at 2:19
6 Answers
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.
6 Comments
table_structure seems to be specific to the sqlite adapter.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'
2 Comments
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" }
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:
\lLists available databases\dLists tables available in the current database\?(help) lists the many options for examining other sorts of objects
Comments
Its a start, it can list:
models = Dir.new("#{RAILS_ROOT}/app/models").entries
Looking some more...