ActiveRecord: список столбцов в таблице из консоли - PullRequest
98 голосов
/ 07 апреля 2011

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

ActiveRecord::Base.connection.tables

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

Ответы [ 8 ]

196 голосов
/ 07 апреля 2011

Будет выведен список column_names из таблицы

Model.column_names
e.g. User.column_names
43 голосов
/ 19 февраля 2013

Получает столбцы, а не только имена столбцов и использует 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

21 голосов
/ 07 апреля 2011

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

> 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...)
5 голосов
/ 11 июля 2014

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

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

pragma table_info(your_table);
2 голосов
/ 09 мая 2015

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

0 голосов
/ 21 марта 2019

дополняет эту полезную информацию, например, используя rails console или 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

Надеюсь, это поможет!

0 голосов
/ 23 марта 2017

Для более компактного формата и меньшего набора текста просто:

Portfolio.column_types 
0 голосов
/ 02 сентября 2016
  • Чтобы перечислить столбцы в таблице, я обычно использую следующее:
    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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...