使用哈希将属性映射到对象

时间:2014-06-19 18:41:08

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

所以我有两个模型对象,它们拥有相似的数据,但它们具有不同的属性名称。为了简洁和清晰起见,我将简化列表。我想用信息创建一个临时对象,比较对象,然后在某些数据发生变化时更新一个。我愿意接受有关如何更好地实现这一目标的建议(请记住,我会展示更多属性)

会员对象具有 employeenumber,employeofirstname和employeelastname

的属性

Censusitem 对象的属性为 employee_id,employee_fn,employee_ln

我有一个已映射的字段,我认为会简化这个:

maps={
  employeenumber: :employee_id,
  employeefirstname: :employee_fn,
  employeelastname: :employee_ln
}

我想我可以循环它们并以某种方式分配它们,但我显然不是很接近:

def clean_member(censusitem, maps)
    tempmember=Member.new
    maps.each do |mname,ciname|
      tempmember.i[o]=censusitem.i[1]
    end
  return tempmember
end

感觉我错过了一些大的东西,这对我来说很正常;-)任何帮助都会非常感激!

标记

1 个答案:

答案 0 :(得分:1)

我相信这应该有效:

def clean_member(censusitem, maps)
    tempmember=Member.new
    maps.each do |mname,ciname|
      tempmember.send("#{mname}=", censusitem.send(ciname))
    end
  return tempmember
end