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.


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.


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'


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" }

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.


0

Jalankan ini:

Rails.application.eager_load! 

Kemudian

ActiveRecord::Base.descendants

Untuk mengembalikan daftar model / tabel


-3

Ini awal, bisa daftar:

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

Mencari lagi ...


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.