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
primary
niteliği doğru şekilde ayarlamaz (tüm sütunlar vardır primary=nil
). Model.columns
Srt32'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 dbconsole
Sqlite konsolunu açmak için komut satırı aracını çalıştırabilirsiniz . Ardından yazdığınız .tables
liste tüm tablolara ve .fullschema
sü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 .