Jawaban:
Ini akan mencantumkan nama_kolom dari tabel
Model.column_names
e.g. User.column_names
Model.columns
menyediakan semua informasi untuk tabel melalui ActiveRecord. Yang terpenting bagi saya itu adalah satu-satunya cara dan termudah untuk mendapatkan keyakinan tentang apa sebenarnya kunci utama saya di tingkat database.
Ini mendapatkan kolom, bukan hanya nama kolom dan menggunakan ActiveRecord :: Base :: Connection, jadi tidak ada model yang diperlukan. Berguna untuk dengan cepat mengeluarkan struktur 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
Contoh keluaran: http://screencast.com/t/EsNlvJEqM
primary
atribut dengan benar (semua kolom memiliki primary=nil
). Ini diatur dengan benar dengan Model.columns
metode yang disarankan oleh srt32.
Menggunakan rel tiga Anda cukup mengetik nama model:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Di rel empat, Anda perlu membuat koneksi terlebih dahulu:
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...)
Jika Anda merasa nyaman dengan perintah SQL, Anda dapat masuk ke folder aplikasi Anda dan menjalankannya rails db
, yang merupakan bentuk singkat dari rails dbconsole
. Ini akan masuk ke shell database Anda, apakah itu sqlite atau mysql.
Kemudian, Anda dapat membuat kueri kolom tabel menggunakan perintah sql seperti:
pragma table_info(your_table);
describe your_table;
, tidak sempurna tetapi berfungsi
Anda dapat menjalankan rails dbconsole
alat baris perintah untuk membuka konsol sqlite. Kemudian ketik .tables
untuk mendaftar semua tabel dan .fullschema
untuk mendapatkan daftar semua tabel dengan nama dan tipe kolom.
Untuk daftar kolom dalam tabel saya biasanya pergi dengan ini:
Model.column_names.sort
.
i.e. Orders.column_names.sort
Menyortir nama kolom memudahkan untuk menemukan apa yang Anda cari.
Untuk informasi lebih lanjut tentang masing-masing kolom menggunakan ini:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Ini akan memberikan hash yang bagus. sebagai contoh:
{
id => int(4),
created_at => datetime
}
melengkapi informasi yang berguna ini, misalnya menggunakan rails console o rails dbconsole:
Mahasiswa adalah Model saya, menggunakan konsol rel:
$ 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)
Opsi lain menggunakan SQLite melalui 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);
Terakhir untuk informasi lebih lanjut.
sqlite> .help
Semoga ini membantu!
Model.columns
untuk mendapatkan info lebih lanjut tentang kolom termasuk data konfigurasi database.