Я знаю, что вы можете попросить ActiveRecord перечислить таблицы в консоли, используя:
ActiveRecord::Base.connection.tables
Есть ли команда, которая будет перечислять столбцы в данной таблице?
Я знаю, что вы можете попросить ActiveRecord перечислить таблицы в консоли, используя:
ActiveRecord::Base.connection.tables
Есть ли команда, которая будет перечислять столбцы в данной таблице?
Здесь будут перечислены столбцы_имя из таблицы
Model.column_names
e.g. User.column_names
Это получает столбцы, а не только имена столбцов и использует 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
Используя рельсы три, вы можете просто набрать имя модели:
> 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...)
Если вам удобны команды SQL, вы можете войти в свою папку приложения и запустить rails db
, что является краткой формой rails dbconsole
. Он войдет в оболочку вашей базы данных, будь то sqlite или mysql.
Затем вы можете запросить столбцы таблицы, используя команду sql, например:
pragma table_info(your_table);
Вы можете запустить rails dbconsole
в инструменте командной строки, чтобы открыть консоль sqlite. Затем введите .tables
, чтобы перечислить все таблицы и .fullschema
, чтобы получить список всех таблиц с именами столбцов и типами.
Чтобы перечислить столбцы в таблице, я обычно использую это: 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
}
Для более компактного формата и менее типизации:
Portfolio.column_types