Rails: Как составить список таблиц / объектов базы данных с помощью консоли Rails?


148

Мне было интересно, если бы вы могли перечислить / изучить, какие базы данных / объекты доступны для вас в консоли Rails. Я знаю, что вы можете увидеть их, используя другие инструменты, мне просто любопытно. Спасибо.


2
для этого и нужен скрипт / dbconsole
hgmnz

Да, это бросает вас в MySQL (или что-то еще). По какой-то странной причине я хочу перечислить столбцы / таблицы и т. Д. С обычной консоли. Я думаю, что для этого могут потребоваться пользовательские рубиновые методы.
rtfminc

Ответы:


305

Вы, вероятно, ищете:

ActiveRecord::Base.connection.tables

и

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

Вам, вероятно, следует заключить их в более короткий синтаксис внутри вашего .irbrc.


3
Спасибо, первый работает так, как я хочу. Но второй нет - охотился за чем-то похожим, но не повезло.
rtfminc

12
ActiveRecord :: Base.connection.columns ("foos") также должна работать, но она возвращает объекты столбцов .map {| c | [c.name, c.type]} в конце исправляет это.
cwninja

27
table_structureпохоже, специфичен для адаптера sqlite.
Кельвин

4
Для Rails4 используйте Model.column_names для перечисления столбцов таблицы
Стивен Провис

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», чтобы увидеть помощь.
Или используйте операторы SQL, такие как «Выбрать * из автомобилей»


7
'rails dbconsole' помещает вас в интерпретатор командной строки (CLI) любого движка базы данных, который вы используете ... выше приведены команды SQLite ... Postgres, например, будет использовать \ dt для вывода списка таблиц ...
Том Хандт

Есть ли способ гарантировать, что каждый раз, когда вам не нужно применять .headers к и .more столбцам при запуске rails db
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)
Валк

4

Вы можете использовать rails dbconsoleдля просмотра базы данных, которую использует ваше приложение rails. Это альтернативный ответ rails db. Обе команды направят вас к интерфейсу командной строки и позволят вам использовать синтаксис запроса к базе данных.


0

Запустите это:

Rails.application.eager_load! 

затем

ActiveRecord::Base.descendants

Чтобы вернуть список моделей / таблиц


-3

Это начало, он может перечислить:

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

Глядя еще немного ...


3
Делая это, вы просто перечисляете файлы моделей, что если таблицы существуют в БД и не имеют модельного файла в каталоге моделей !!
Abo-Elleef
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.