我基本上是将一个对象信息复制到另一个。一般来说,代码或方法可能不是最经过深思熟虑的,但现在这不是我的问题。
这是错误:
syntax error, unexpected '=', expecting keyword_end
original.send("#{attribute}") = edited.send("#{attribute}")
^
我正在做的是循环遍历object2的所有属性,然后将每个属性“复制”到对象1.我可以为每个模型制作这个特定的,但我希望有一个单独的implement_changes方法,这将适用于每个班级基本上。复制模型belongs_to:edited和:original通过多态关联。
class Copy < ActiveRecord::Base
def implement_changes
original = self.original_type.constantize.find(original_id)
edited = self.edited_type.constantize.find(edited_id)
accessible_attributes = original_type.constantize.accessible_attributes.to_a.select{|a| a != "slug"}
accessible_attributes.shift
accessible_attributes.each do |attribute|
original.send("#{attribute}") = edited.send("#{attribute}")
end
original.save!
end
为什么这个块不起作用?我不明白。这里发送的用法是否正确?它不会让我做original.attribute。
任何帮助表示赞赏! :)
答案 0 :(得分:3)
setter的方法名称包含等号,并将新值作为参数。你可以试试:
original.send("#{attribute}=", edited.send(attribute))
答案 1 :(得分:1)
您是否有理由不使用ActiveResource::Base#dup?