rtfminc
rtfminc

Reputation: 6363

Rails: How to list database tables/objects using the Rails console?

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

Answers (6)

Mestica
Mestica

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 objects

Upvotes: 5

cwninja
cwninja

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

stevec
stevec

Reputation: 52248

Run this:

Rails.application.eager_load! 

Then

ActiveRecord::Base.descendants

To return a list of models/tables

Upvotes: 1

hamster ham
hamster ham

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

rtfminc
rtfminc

Reputation: 6363

Its a start, it can list:

models = Dir.new("#{RAILS_ROOT}/app/models").entries

Looking some more...

Upvotes: -3

DomQ
DomQ

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

Related Questions