2013-07-24 8 views
5

私は、オブジェクトとその関連する関連モデルのコピーの作成に取り組んでいます。しかし、私はそれのための解決策を見つけることができません。私はアメーバのような宝石は使用したくない。モデル間の関係は、このようなものです。
オブジェクトとそれに関連するすべてのモデルのコピーをレールに作成

class ClassToCopy 
    has_many :cups 
    has_many :cup_parts, through :cups 
    belongs_to :xyz 
end 

だから私は、コピーClassToCopyのようなボタンを維持したいし、その上でクリックすることで、それに伴い、すべての団体とそのオブジェクトの新しいコピーを作成する必要があります。 ClassToCopyのオブジェクトに10個のcupと4個のcup_partsがある場合、それらのクラスの対応するオブジェクトも作成する必要があります。 クローンdup(レール3.2.xを使用)を試しましたが、クローンは元のオブジェクトから新しいオブジェクトを作成せず、dupは関連付けを許可しません。したがって、何をすべきか分かりません。

答えて

1

あなたはassosiationsのそれぞれの新しいオブジェクトと新しいオブジェクトを返すようにdupをオーバーライドすることができます可能性があり、何かのように:

class Thing 
    has_many :cups 

    def dup 
    super.tap do |new_thing| 
     self.cups.each do |cup| 
     new_thing.cups << cup.dup 
     end 
    end 
    end 
end 
関連する問題