如何使用`attribute_names`方法访问rails模型中的attr_accessor

时间:2012-02-16 09:04:37

标签: ruby-on-rails ruby activerecord

我需要访问模型的属性名称,但它没有显示所有属性名称。

我有用户模型,我在其中添加了attr_accessor :color(因为我不想将其作为列存储在我的数据库中)。 但是,如果我尝试使用User.first.attribute_names访问属性名称,它只显示数据库列,它不显示'color'属性,那么如何访问所有属性?是否有任何方法将attr_accessor列为属性?< / p>

3 个答案:

答案 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更符合您的需求。