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

148

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

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

Ответы:

305

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

ActiveRecord::Base.connection.tables

и

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

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

cwninja
источник
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" }
DomQ
источник
1
Кроме того :ActiveRecord::Base.descendants.map(&:name)
Валк
4

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

Ральф Рафаэль Фрикс
источник
0

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

Rails.application.eager_load! 

затем

ActiveRecord::Base.descendants

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

stevec
источник
-3

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

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

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

rtfminc
источник
3
Делая это, вы просто перечисляете файлы моделей, что если таблицы существуют в БД и не имеют модельного файла в каталоге моделей !!
Abo-Elleef