ActiveRecord: список столбцов в таблице с консоли

Я знаю, что вы можете попросить ActiveRecord перечислить таблицы в консоли, используя:

ActiveRecord::Base.connection.tables

Есть ли команда, которая будет перечислять столбцы в данной таблице?

Ответ 1

Здесь будут перечислены столбцы_имя из таблицы

Model.column_names
e.g. User.column_names

Ответ 2

Это получает столбцы, а не только имена столбцов и использует ActiveRecord:: Base:: Connection, поэтому никакие модели не нужны. Удобно быстро выводить структуру db.

ActiveRecord::Base.connection.tables.each do |table_name|
  puts table_name
  ActiveRecord::Base.connection.columns(table_name).each {|c| puts "- #{c.name}: #{c.type.to_s} #{c.limit.to_s}"}
end

Пример вывода: http://screencast.com/t/EsNlvJEqM

Ответ 3

Используя рельсы три, вы можете просто набрать имя модели:

> User
gives:
User(id: integer, name: string, email: string, etc...)

В рельсах четыре, вам нужно сначала установить соединение:

irb(main):001:0> User
=> User (call 'User.connection' to establish a connection)
irb(main):002:0> User.connection; nil #call nil to stop repl spitting out the connection object (long)
=> nil
irb(main):003:0> User
User(id: integer, name: string, email: string, etc...)

Ответ 4

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

Затем вы можете запросить столбцы таблицы, используя команду sql, например:

pragma table_info(your_table);

Ответ 5

Вы можете запустить rails dbconsole в инструменте командной строки, чтобы открыть консоль sqlite. Затем введите .tables, чтобы перечислить все таблицы и .fullschema, чтобы получить список всех таблиц с именами столбцов и типами.

Ответ 6

  • Чтобы перечислить столбцы в таблице, я обычно использую это:
    Model.column_names.sort.
    i.e. Orders.column_names.sort

    Сортировка имен столбцов позволяет легко найти то, что вы ищете.

  • Для получения дополнительной информации о каждом из столбцов используйте это:
    Model.columns.map{|column| [column.name, column.sql_type]}.to_h.

Это обеспечит хороший хеш. например:

{
   id => int(4),
   created_at => datetime
}

Ответ 7

Для более компактного формата и менее типизации:

Portfolio.column_types