Rails: Bagaimana cara membuat daftar tabel / objek database menggunakan konsol Rails?

148

Saya bertanya-tanya apakah Anda bisa mendaftar / memeriksa database / objek apa yang tersedia untuk Anda di konsol Rails. Saya tahu Anda bisa melihatnya menggunakan alat lain, saya hanya ingin tahu. Terima kasih.

rtfminc
sumber
2
itulah gunanya script / dbconsole
hgmnz
Ya, itu menjatuhkan Anda ke mysql (atau apa pun). Untuk beberapa alasan orang asing saya ingin membuat daftar kolom / tabel dll dari konsol biasa. Saya berpikir bahwa itu mungkin memerlukan metode ruby ​​yang dibuat khusus untuk melakukan hal seperti itu.
rtfminc

Jawaban:

305

Anda mungkin mencari:

ActiveRecord::Base.connection.tables

dan

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

Anda mungkin harus membungkusnya dalam sintaks yang lebih pendek di dalam .irbrc.

cwninja
sumber
3
Terima kasih, yang pertama berfungsi seperti yang saya inginkan. Tetapi yang kedua tidak - berburu untuk sesuatu yang serupa tetapi tidak berhasil.
rtfminc
12
ActiveRecord :: Base.connection.columns ("foos") juga harus berfungsi, tetapi mengembalikan objek kolom, .map {| c | [c.name, c.type]} di bagian akhir memperbaikinya.
cwninja
27
table_structuretampaknya khusus untuk adaptor sqlite.
Kelvin
4
Untuk Rails4 gunakan Model.column_names untuk mendaftar kolom tabel
Stephen Provis
4
Juga di Rails 4, Anda bisa menggunakan ModelName untuk mendapatkan daftar kolom dan tipe datanya.
themattkellyshow
20

Saya berharap jawaban saya yang terlambat bisa membantu.
Ini akan menuju konsol rails database.

rails db

cukup cetak output permintaan Anda

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

Tunjukkan tabelnya

.table

'.membantu' untuk melihat bantuan.
Atau gunakan pernyataan SQL seperti 'Pilih * dari mobil'

ham hamster
sumber
7
'rails dbconsole' menempatkan Anda dalam interpreter baris perintah (CLI) dari mesin basis data apa pun yang Anda gunakan ... di atas adalah perintah SQLite ... Postgres, misalnya, akan menggunakan '\ dt' untuk membuat daftar tabel ...
Tom Hundt
apakah ada cara untuk memastikan bahwa setiap kali Anda tidak perlu menerapkan .headers dan .more kolom saat menjalankan rails db
Mark
7

Untuk mendapatkan daftar semua kelas model, Anda dapat menggunakan ActiveRecord::Base.subclassesmis

ActiveRecord::Base.subclasses.map { |cl| cl.name }
ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" }
DomQ
sumber
1
Juga:ActiveRecord::Base.descendants.map(&:name)
valk
4

Anda dapat menggunakan rails dbconsoleuntuk melihat basis data yang digunakan aplikasi rel Anda. Itu jawaban alternatif rails db. Kedua perintah akan mengarahkan Anda antarmuka baris perintah dan akan memungkinkan Anda untuk menggunakan sintaks permintaan basis data itu.

Ralf Rafael Frix
sumber
0

Jalankan ini:

Rails.application.eager_load! 

Kemudian

ActiveRecord::Base.descendants

Untuk mengembalikan daftar model / tabel

stevec
sumber
-3

Ini awal, bisa daftar:

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

Mencari lagi ...

rtfminc
sumber
3
dengan melakukan ini Anda cukup mendaftar file model bagaimana jika tabel ada di db dan tidak memiliki model fild dalam model dir !!
abo-elleef