Rails: Rails konsolunu kullanarak veritabanı tabloları / nesneleri nasıl listelenir?


151

Rails konsolunda sizin için hangi veritabanlarının / nesnelerin mevcut olduğunu listeleyip / inceleyip inceleyemeyeceğinizi merak ediyordum. Onları diğer araçları kullanarak görebileceğinizi biliyorum, sadece merak ediyorum. Teşekkürler.


2
gerçi script / dbconsole bunun için
hgmnz

Evet, bu sizi mysql'e (veya her neyse) düşürür. Daha garip bir nedenle normal konsoldan sütunları / tabloları vb. Listelemek istiyorum. Böyle bir şey yapmak için özel yapım yakut yöntemleri gerektirebileceğini düşünüyorum.
rtfminc

Yanıtlar:


311

Muhtemelen arıyorsun:

ActiveRecord::Base.connection.tables

ve

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

Muhtemelen bunları daha kısa sözdizimiyle .irbrc.


3
Teşekkürler, ilki istediğim gibi çalışıyor. Ancak ikincisi, benzer bir şeyin peşine düşmez ama şans yoktur.
rtfminc

12
ActiveRecord :: Base.connection.columns ("foos") da çalışmalıdır, ancak sütun nesnelerini döndürür, .map {| c | Sonunda [c.name, c.type]} bunu düzeltir.
cwninja

27
table_structuresqlite bağdaştırıcısına özgü görünüyor.
Kelvin

4
Rails4 için tablo sütunlarını listelemek için Model.column_names'i kullanın
Stephen Provis

4
Ayrıca Rails 4'te, sütunların ve veri türlerinin bir listesini almak için ModelName'i kullanabilirsiniz .
themattkellyshow

21

Umarım geç cevabım biraz yardımcı olabilir.
Bu, raylar veritabanı konsoluna gidecek.

rails db

sorgu çıktınızı oldukça yazdırın

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

Tabloları göster

.table

Yardım görmek için '.help'.
Veya 'Arabalardan * seçin' gibi SQL ifadeleri kullanın


7
'rails dbconsole' sizi kullandığınız veritabanı motorunun komut satırı yorumlayıcısına (CLI) koyar ... yukarıdakiler SQLite komutlarıdır ... Örneğin Postgres, tabloları listelemek için '\ dt' kullanır ...
Tom Hundt

Rayları çalıştırırken her seferinde .headers ve .more sütun uygulamak zorunda kalmadığınızdan emin olmanın bir yolu var mı db
Mark

8

Tüm model sınıflarının bir listesini almak için, ActiveRecord::Base.subclassesörn.

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

1
Ayrıca:ActiveRecord::Base.descendants.map(&:name)
valk

4

rails dbconsoleRails uygulamanızın kullandığı veritabanını görüntülemek için kullanabilirsiniz . Alternatif cevap rails db. Her iki komut da sizi komut satırı arayüzüne yönlendirecek ve bu veritabanı sorgu sözdizimini kullanmanıza izin verecektir.


0

Bunu çalıştırın:

Rails.application.eager_load! 

Sonra

ActiveRecord::Base.descendants

Modellerin / tabloların bir listesini döndürmek için


-3

Bu bir başlangıç, şunları listeleyebilir:

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

Biraz daha arıyorum ...


3
bunu yaparak model dosyalarını listelersiniz, tablolar db'de mevcutsa ve modeller dizininde model fild yoksa !!
abo-elleef
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.