私は としたい1.データベースからオブジェクト1とオブジェクト2を取得する(それぞれ2つともhas_many関連を持つ) 2.オブジェクト1のクローンであるオブジェクト3を作成し、したがって、関連付けはまだありません 2.オブジェクト2の関連付けを複製して、オブジェクト3の関連付けに追加します 3.メモリ の操作に新しいオブジェクト3を使用します4.データベースを永久に変更しないでプロセスを終了します - オブジェクト1およびオブジェクト2プロセスが終了しても依然として元の関連がありますメモリ内での操作のためのmongoマッパーの関連付けの重複
代わりに何が起きているのですか
- 私がオブジェクト1のクローンであり、従って、まだ
- 全く関連を持たないオブジェクト3を作成し、データベースからオブジェクト1及びオブジェクト2(両方とも2つのにhas_manyアソシエーションそれぞれを有する)
- をつかむIは、オブジェクト2の重複オブジェクト3の関連付けに追加する
- 私はメモリ内の操作に新しいオブジェクト3を使用します
- 私はプロセスを終了しましたが、データベースに永続的な変更がありました。オブジェクト2には関連がありません。 (Temporary)オブジェクト3 idに変更されました。
ここは私のコードです。 all.last.association1が、私は空の配列を取得:すべては私が言うとき、今では
object1 = all.last.clone #we take the most recently created object
all.each do |instance|
instance_association1 = (instance.association1).dup
object1.association1 += instance_association1 #BUG this moves the association
object1.association1.uniq!
instance_association2 = (instance.association2).dup
object1.association2 += instance_association2
object1.association2.uniq!
end
注内のオブジェクトの任意の#を持つ配列が含まれていることに注意してください。
ヘルプ!