回答:
これはテーブルからcolumn_namesをリストします
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
primary
属性を設定すると、属性が正しく設定されません(すべての列にが含まれますprimary=nil
)。Model.columns
srt32が提案する方法で正しく設定されています。
Rails 3を使用すると、モデル名を入力するだけで済みます。
> User
gives:
User(id: integer, name: string, email: string, etc...)
Rails 4では、最初に接続を確立する必要があります:
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...)
rails dbconsole
コマンドラインツールで実行して、sqliteコンソールを開くことができます。次に、入力し.tables
てすべてのテーブルをリストし、.fullschema
列名とタイプを含むすべてのテーブルのリストを取得します。
たとえば、rails console o rails dbconsoleを使用して、この有用な情報を補足します。
学生は私のモデルで、rails consoleを使用しています:
$ 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)
Railsを通じてSQLiteを使用する他のオプション:
$ 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
データベース構成データを含む列に関する詳細情報を取得するようなものを実行することもできます。