Rails ActiveRecord方法列出包括关联虚拟属性的属性

时间:2013-11-04 17:28:21

标签: ruby-on-rails activerecord

是否有方法列出数据库列名中的所有活动记录类的属性以及关联中的属性?

Foo.attribute_names不包括从关联生成的虚拟属性

Foo.new.methods 确实包含这些(以及大量不相关的方法),但我想要一个更加简化的方法列表,这些方法只与ActiveRecord属性相关,如果可能的。

是否有正确的方式来执行此操作,我忽略了?

2 个答案:

答案 0 :(得分:1)

我不知道你的案例的确切Rails方法,但你可以通过做类似的事情来解决..

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

第二部分将为您提供关联的模型方法作为数组中的字符串。

答案 1 :(得分: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