Відповіді:
Це перерахує імена стовпців із таблиці
Model.column_names
e.g. User.column_names
Model.columns
надає всю інформацію для таблиці через ActiveRecord. Для мене це головним чином єдиний і найпростіший спосіб отримати впевненість у тому, що мій основний ключ був насправді на рівні бази даних.
Це отримує стовпці, а не лише назви стовпців та використовує ActiveRecord :: Base :: З'єднання, тому жодні моделі не потрібні. Зручно для швидкого виведення структури db.
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
}
доповнюючи цю корисну інформацію, наприклад, використовуючи рейки консолі або рейки 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
щоб отримати більше інформації про стовпці, включаючи дані конфігурації бази даних.