Rails: Jak wyświetlić tabele / obiekty bazy danych za pomocą konsoli Rails?


148

Zastanawiałem się, czy możesz wyświetlić / sprawdzić, jakie bazy danych / obiekty są dostępne w konsoli Railsów. Wiem, że możesz je zobaczyć za pomocą innych narzędzi, jestem po prostu ciekawy. Dzięki.


2
do tego służy skrypt / dbconsole
hgmnz

Tak, to przenosi cię do mysql (lub cokolwiek innego). Z jakiegoś dziwnego powodu chcę wyświetlić kolumny / tabele itp. Ze zwykłej konsoli. Myślę, że może to wymagać niestandardowych metod rubinowych, aby zrobić coś takiego.
rtfminc

Odpowiedzi:


305

Prawdopodobnie szukasz:

ActiveRecord::Base.connection.tables

i

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

Prawdopodobnie powinieneś zawrzeć je w krótszej składni wewnątrz swojego .irbrc.


3
Dzięki, pierwszy działa tak, jak chcę. Ale drugi nie - polował na coś podobnego, ale bez szczęścia.
rtfminc

12
ActiveRecord :: Base.connection.columns ("foos") również powinno działać, ale zwraca obiekty kolumn, .map {| c | [c.name, c.type]} na końcu rozwiązuje ten problem.
cwninja

27
table_structurewydaje się być specyficzny dla adaptera sqlite.
Kelvin

4
W przypadku Rails4 użyj Model.column_names, aby wyświetlić listę kolumn tabeli
Stephen Provis

4
Również w Rails 4 możesz po prostu użyć ModelName, aby uzyskać listę kolumn i ich typów danych.
themattkellyshow

20

Mam nadzieję, że moja późna odpowiedź może być pomocna.
To trafi do konsoli bazy danych railsów.

rails db

ładnie wydrukuj wyjście zapytania

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

Pokaż tabele

.table

„.help”, aby zobaczyć pomoc.
Lub użyj instrukcji SQL, takich jak „Wybierz * z samochodów”


7
'rails dbconsole' przenosi cię do interpretera wiersza poleceń (CLI) dowolnego silnika bazy danych, którego używasz ... powyższe to polecenia SQLite ... Na przykład Postgres użyłby '\ dt' do wyświetlenia tabel ...
Tom Hundt

czy istnieje sposób, aby upewnić się, że za każdym razem, gdy nie będziesz musiał stosować .headers na i .more kolumn podczas uruchamiania szyn, db
Mark

7

Aby uzyskać listę wszystkich klas modeli, możesz użyć ActiveRecord::Base.subclassesnp

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

1
Również:ActiveRecord::Base.descendants.map(&:name)
valk

4

Możesz użyć, rails dbconsoleaby wyświetlić bazę danych używaną przez twoją aplikację railsową. To alternatywna odpowiedź rails db. Oba polecenia skierują użytkownika do interfejsu wiersza poleceń i pozwolą na użycie tej składni zapytania do bazy danych.


0

Uruchom to:

Rails.application.eager_load! 

Następnie

ActiveRecord::Base.descendants

Aby zwrócić listę modeli / tabel


-3

To początek, może wymienić:

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

Szukam więcej ...


3
robiąc to, po prostu wypisujesz pliki modeli, co jeśli tabele istnieją w db i nie mają fild modelu w katalogu modeli !!
abo-elleef
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.