Yanıtlar:
Bu, bir tablodaki sütun adlarını listeleyecektir
Model.column_names
e.g. User.column_names
Model.columns, ActiveRecord aracılığıyla bir tablo için tüm bilgileri sağlar. Benim için çok önemli olan, birincil anahtarımın veritabanı düzeyinde gerçekte ne olduğuna dair güven kazanmanın tek ve en kolay yoluydu .
Bu sadece sütun adlarını değil, sütunları da alır ve ActiveRecord :: Base :: Connection'ı kullanır, bu nedenle hiçbir modele gerek yoktur. Bir db yapısının hızlı bir şekilde çıktısını almak için kullanışlıdır.
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
Örnek çıktı: http://screencast.com/t/EsNlvJEqM
primaryniteliği doğru şekilde ayarlamaz (tüm sütunlar vardır primary=nil). Model.columnsSrt32'nin önerdiği yöntemle doğru bir şekilde ayarlanır .
Üç numaralı rayları kullanarak model adını yazabilirsiniz:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Dördüncü raylarda, önce bir bağlantı kurmanız gerekir:
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 komutları konusunda rahatsanız, uygulamanızın klasörüne girebilir ve rails db kısa bir rails dbconsole. İster sqlite ister mysql olsun veritabanınızın kabuğuna girecektir.
Ardından, aşağıdaki gibi sql komutunu kullanarak tablo sütunlarını sorgulayabilirsiniz:
pragma table_info(your_table);
describe your_table;için mükemmel değil ama çalışıyor
rails dbconsoleSqlite konsolunu açmak için komut satırı aracını çalıştırabilirsiniz . Ardından yazdığınız .tablesliste tüm tablolara ve .fullschemasütun adları ve türleri ile tüm tabloların bir listesini almak için.
Genellikle bu ile gitmek bir tablodaki sütunları listelemek için:
Model.column_names.sort.
i.e. Orders.column_names.sort
Sütun adlarını sıralamak, aradığınızı bulmanızı kolaylaştırır.
Hakkında daha fazla bilgi için sütunların her biri bu kullanın:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h.
Bu güzel bir hash sağlayacaktır. Örneğin:
{
id => int(4),
created_at => datetime
}
bu yararlı bilgileri tamamlayan, örneğin raylar konsolu veya raylar dbconsole kullanımı:
Öğrenci benim Modelimdir, raylar konsolunu kullanarak:
$ 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 üzerinden SQLite kullanan diğer seçenek:
$ 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);
Son olarak daha fazla bilgi için.
sqlite> .help
Bu yardımcı olur umarım!
Model.columns, veritabanı yapılandırma verileri dahil olmak üzere sütunlar hakkında daha fazla bilgi almak gibi bir şey de çalıştırabilirsiniz .