Rails:Railsコンソールを使用してデータベーステーブル/オブジェクトを一覧表示する方法


147

Railsコンソールで利用可能なデータベース/オブジェクトをリスト/調査できるかどうか疑問に思っていました。私はあなたが他のツールを使ってそれらを見ることができることを知っています、私はただ興味があります。ありがとう。


2
それが、script / dbconsoleの目的です
hgmnz

はい、それはあなたをmysql(または何でも)に落とします。奇妙な理由で、通常のコンソールから列/テーブルなどを一覧表示したいと思います。そのようなことをするためにカスタムメイドのルビメソッドが必要になるかもしれないと私は考えています。
rtfminc 2010年

回答:


304

あなたはおそらく求めています:

ActiveRecord::Base.connection.tables

そして

ActiveRecord::Base.connection.columns('projects').map(&:name)

おそらく、それらを内の短い構文でラップする必要があります.irbrc


3
ありがとう、最初のものは私が望むように機能します。しかし、2番目のものはそうではありません-同様の何かを探しましたが、運はありませんでした。
rtfminc 2010年

12
ActiveRecord :: Base.connection.columns( "foos")も機能するはずですが、列オブジェクト.map {| c |を返します 最後の[c.name、c.type]}はそれを修正します。
cwninja 2010年

27
table_structuresqliteアダプターに固有のようです。
ケルビン

4
Rails4の場合、Model.column_namesを使用してテーブルの列をリストします
Stephen Provis

4
また、Rails 4では、ModelNameを使用して、列とそのデータ型のリストを取得できます。
themattkellyshow

20

私の遅い答えが助けになることを願っています。
これは、railsデータベースコンソールに移動します。

rails db

クエリ出力をきれいに印刷する

.headers on
.mode columns
(turn headers on and show database data in column mode )

テーブルを表示

.table

ヘルプを表示するには「.help」。
または、「Select * from cars」のようなSQLステートメントを使用します


7
'rails dbconsole'は、使用しているデータベースエンジンのコマンドラインインタープリター(CLI)に移動します...上記はSQLiteコマンドです...たとえば、Postgresは '\ dt'を使用してテーブルを一覧表示します...
トムハント

rails dbを実行するときに毎回.headersと.moreカラムを適用する必要がないことを保証する方法はありますか
Mark

7

すべてのモデルクラスのリストを取得するには、使用することができますActiveRecord::Base.subclassesたとえば、

ActiveRecord::Base.subclasses.map { |cl| cl.name }
ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" }

1
また:ActiveRecord::Base.descendants.map(&:name)
2016

4

を使用rails dbconsoleして、railsアプリケーションが使用しているデータベースを表示できます。それは別の答えrails dbです。どちらのコマンドもコマンドラインインターフェイスを指示し、そのデータベースクエリ構文を使用できるようにします。


0

これを実行してください:

Rails.application.eager_load! 

その後

ActiveRecord::Base.descendants

モデル/テーブルのリストを返すには


-3

その開始、それはリストすることができます:

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

さらに探しています...


3
これを行うことにより、テーブルがdbに存在し、モデルdirにモデルフィールドが存在しない場合にモデルファイルをリストするだけです。
abo-elleef 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.