是否可以在模型中迭代访问器?
我的模型看起来像:
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 |
但它似乎没有像我想象的那样工作。有更好的方法吗?
答案 0 :(得分:0)
在Ruby中,可以通过发送消息来设置属性:
key = item.Field["@name"]
value = item.Field["@value"]
@account_new.send("#{key}=", value)