Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用散列将属性映射到对象_Ruby_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Ruby 使用散列将属性映射到对象

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 我有一个带有映射

因此,我有两个模型对象,它们拥有相似的数据,但具有不同的属性名称。为了简洁明了,我将简化列表。我想用这些信息创建一个临时对象,比较这些对象,然后在某些数据发生更改时更新一个对象。我愿意接受关于如何更好地实现这一点的建议(请记住,我展示的还有很多属性)

成员对象具有属性employeenumber、employeefirstname和employeelastname

Censusitem对象具有属性employee\u id、employee\u fn、employee\u ln

我有一个带有映射字段的has,我认为它可以简化这一过程:

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