2013-11-04 69 views
2

有沒有一種方法來列出數據庫列名的所有活動記錄類的屬性以及來自關聯的屬性?Rails的ActiveRecord方法列出屬性,包括相關的虛擬屬性

Foo.attribute_names不包括協會

Foo.new.methods產生不包括這些虛擬屬性(以及一個巨大的不相關的方法列表),但我想的是方法更縮減下拉列​​表只有在可能的情況下才與ActiveRecord屬性相關。

有沒有正確這樣做,我俯瞰的方式?

回答

1

在我的書中,正確的方法是使用attr_accessible來定義可訪問的屬性。然後在您的模型上,您可以簡單地撥打Foo.accessible_attributes並獲得一個不錯的列表。

但是,協會是棘手的,但你可以這樣做:

Foo.accessible_attributes.to_a + Foo.reflect_on_all_associations.map(&:name) 

如果你不使用attr_accessible你必須與

Bundle.new.attributes.keys - Bundle.protected_attributes.to_a 
一起本事
1

我不知道確切的Rails的方法爲你的情況,但你可以做這樣的事情得到解決..

Model.attribute_names + Model.reflect_on_all_associations.map {|a| a.name.to_s }

第二部分會給你相關的模型方法如在弦陣列。