2010-10-25 14 views
6

foo_id, foo_name ve foo_description alanlarına sahip bir FooActiveRecord modelim var. @foo.model_fields() dizi döndürür:: Yardım içinRaylar: Veritabanından gelen bir nesne için tüm alanı al

["foo_id", "foo_name", "foo_description"] ? 

Teşekkür

@foo = Foo.find(1) 

gibi bir şey yaptıktan sonra öyle ki herhangi bir yöntem "model_fields" var mıdır.

cevap

23

Bir alan ve değerler karması veren bir attributes yöntemi vardır. Bu nedenle, modeldeki alanların bir dizisini almak için

.

Ayrıca, önce bir kayıt aramak zorunda kalmadan size aynı bilgileri veren bir Foo.column_names sınıf yöntemi de vardır. için

Belgeleme: Hızlı cevap için
ActiveRecord::Base.column_names
ActiveRecord::Base#attributes

+0

Teşekkür Emily! .attributes = her zaman kullanıyorum. Bunun hakkında düşünmediğimden emin değilim ... –

+1

Ve eğer öznitelikler ve değerler arasında geçiş yapmanız gerekiyorsa, bunu bir blok ile yapmak çok basittir: '@foo.attributes.each do | k, v | ' –

+0

Bazen Sütun isimlerine sembol olarak 'Model.column_names.map (&: to_sym) 'kurtarmaya ihtiyacım var. – Epigene

İlgili konular