如何在模型中迭代访问器?

时间:2012-05-08 17:18:08

标签: ruby-on-rails-3

是否可以在模型中迭代访问器?

我的模型看起来像:

class Account < User
  #Required fields
  attr_accessor :email, :first_name, :last_name, :organizations
end

我得到一个看起来像

的JSON
@name : email
@value : nick@nick.com

@name : first_name
@value : nick

我有一堆看起来像的代码:

 unless(item.Field["@name"].to_s.match('E-mail').nil?)
    @account_new.email = item.Field["@value"].to_s
  end

  unless(item.Field["@name"].to_s.match('First Name').nil?)
    @account_new.first_name = item.Field["@value"].to_s
  end

这是可怕的代码。我想知道是否可以遍历模型中的访问器并获取访问者的名称并使用它来模式匹配JSON对象然后进行分配?

我尝试使用.instance_variables.each do | variable |

但它似乎没有像我想象的那样工作。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

在Ruby中,可以通过发送消息来设置属性:

key = item.Field["@name"]
value = item.Field["@value"]
@account_new.send("#{key}=", value)