我需要访问模型的属性名称,但它没有显示所有属性名称。
我有用户模型,我在其中添加了attr_accessor :color
(因为我不想将其作为列存储在我的数据库中)。
但是,如果我尝试使用User.first.attribute_names
访问属性名称,它只显示数据库列,它不显示'color'属性,那么如何访问所有属性?是否有任何方法将attr_accessor列为属性?< / p>
答案 0 :(得分:2)
User.accessible_attributes #will return array of accessible attributes
答案 1 :(得分:1)
首先,如果你不知道区别b / w attr_acessabe和attr_accessor看看
How to iterate ActiveRecord Attributes, including attr_accessor methods
如果没有要保存在数据库中的属性,可以添加attr_accessor然后将att_accessor添加到attr_accessable:)
attr_accessor :color
attr_accessible :color
现在
User.accessible_attributes # => ["color"], but beware that you have lost all other attribute you need to add those too if you want to enable mass assignment.
attr_accessible :color,:first_name,:blah,:blah...
答案 2 :(得分:-2)
您是否尝试过#methods,即User.first.methods,或者User.accessible_attributes更符合您的需求。