循环遍历模型中的所有公共属性

时间:2014-06-30 16:34:48

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个User模型,其中一些属性是公共的(可由用户编辑),另一些属于私有(Salt等)。

假设模型有N个公共属性(例如Email和Surname)和M个私有属性(例如Salt,confirmation_token)

我想要做的就像是

user.attrs.each |name, value| do 
   something(name, value) 
end

我可以以某种方式使用attr_accessor吗?

使用rails 4.0.2和ruby 2.0.0

有什么想法吗?干杯

1 个答案:

答案 0 :(得分:2)

您可能拥有的属性多于不允许的属性,因此我会创建一个受保护的属性名称数组,并在循环遍历属性时忽略这些属性。

protected_attributes = %w(password salt confirmation_token)

user.attributes.each do |name, value|
  unless protected_attributes.include?(name)
    something(name, value)
  end
end