基本的に、あるオブジェクトの情報を別のオブジェクトにコピーしています。一般的に、コードまたはアプローチは最もよく考えられていない可能性がありますが、それは今のところ私の問題ではありません。
これはエラーです:
syntax error, unexpected '=', expecting keyword_end
original.send("#{attribute}") = edited.send("#{attribute}")
^
私がやっていることは、object2 のすべての属性をループしてから、それぞれをオブジェクト 1 に「コピー」することです。これを各モデルに固有にすることもできますが、基本的に各クラスで機能する単一の implement_changes メソッドが必要でした。 . コピーモデルは、ポリモーフィックアソシエーションを介して :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
なぜそのブロックが機能しないのですか?? 理解できません。send の使い方は正しいですか?original.attribute.
どんな助けでも大歓迎です!:)