0

是否可以遍历模型中的访问器?

我有一个看起来像的模型:

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

我得到一个看起来像

@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 做 |variable|

但它似乎并不像我认为的那样工作。有一个更好的方法吗?

4

1 回答 1

0

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

key = item.Field["@name"]
value = item.Field["@value"]
@account_new.send("#{key}=", value) 
于 2012-05-08T17:39:30.347 回答