Ответы:
Это перечислит имена столбцов из таблицы
Model.column_names
e.g. User.column_names
Model.columns
предоставляет всю информацию для таблицы через ActiveRecord. Для меня это был единственный и самый простой способ получить уверенность в том, что на самом деле был мой первичный ключ на уровне базы данных.
Он получает столбцы, а не только имена столбцов, и использует ActiveRecord :: Base :: Connection, поэтому никаких моделей не требуется. Удобно для быстрого вывода структуры базы данных.
ActiveRecord::Base.connection.tables.each do |table_name|
puts table_name
ActiveRecord::Base.connection.columns(table_name).each do |c|
puts "- #{c.name}: #{c.type} #{c.limit}"
end
end
Пример вывода: http://screencast.com/t/EsNlvJEqM
primary
неправильно устанавливает атрибут (у всех столбцов primary=nil
). Он установлен правильно Model.columns
методом, предложенным srt32.
Используя рельсы три, вы можете просто ввести название модели:
> 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);
describe 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
}
дополняя эту полезную информацию, например, используя rails console o rails dbconsole:
Студент - моя модель, использующая консоль рельсов:
$ rails console
> Student.column_names
=> ["id", "name", "surname", "created_at", "updated_at"]
> Student
=> Student(id: integer, name: string, surname: string, created_at: datetime, updated_at: datetime)
Другой вариант с использованием SQLite через Rails:
$ rails dbconsole
sqlite> .help
sqlite> .table
ar_internal_metadata relatives schools
relationships schema_migrations students
sqlite> .schema students
CREATE TABLE "students" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "surname" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
Наконец для получения дополнительной информации.
sqlite> .help
Надеюсь это поможет!
Model.columns
чтобы получить больше информации о столбцах, включая данные конфигурации базы данных.