Відповіді:
Це перерахує імена стовпців із таблиці
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щоб отримати більше інформації про стовпці, включаючи дані конфігурації бази даних.