Ruby 使用散列将属性映射到对象
因此,我有两个模型对象,它们拥有相似的数据,但具有不同的属性名称。为了简洁明了,我将简化列表。我想用这些信息创建一个临时对象,比较这些对象,然后在某些数据发生更改时更新一个对象。我愿意接受关于如何更好地实现这一点的建议(请记住,我展示的还有很多属性) 成员对象具有属性employeenumber、employeefirstname和employeelastname Censusitem对象具有属性employee\u id、employee\u fn、employee\u ln 我有一个带有映射字段的has,我认为它可以简化这一过程:Ruby 使用散列将属性映射到对象,ruby,activerecord,ruby-on-rails-4,Ruby,Activerecord,Ruby On Rails 4,因此,我有两个模型对象,它们拥有相似的数据,但具有不同的属性名称。为了简洁明了,我将简化列表。我想用这些信息创建一个临时对象,比较这些对象,然后在某些数据发生更改时更新一个对象。我愿意接受关于如何更好地实现这一点的建议(请记住,我展示的还有很多属性) 成员对象具有属性employeenumber、employeefirstname和employeelastname Censusitem对象具有属性employee\u id、employee\u fn、employee\u 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
感觉我错过了一些重要的事情,这对我来说很正常;-)任何帮助都将不胜感激
马克我认为这应该有效:
def clean_member(censusitem, maps)
tempmember=Member.new
maps.each do |mname,ciname|
tempmember.send("#{mname}=", censusitem.send(ciname))
end
return tempmember
end