2
クラスP
(親)とC
(子)の間に1対多の関係があります。Rails 5.例外処理との関連付けの更新
表C
は、ユニークな複合インデックス{p_id, somerow}
を持っています。クラスP
(p1
とp2
)の2つのオブジェクトを持つ
は、私が p2.childs.update_all (parent: p1)
を介してこれをやって、一つにそれらを結合したいのですが、複合インデックスの一意性に違反しているので、私は、トランザクションのロールバックを取得します。しかし、内部ロジックの観点からは、この状況はエラーではなく、親を変更する代わりに重複したエントリを破棄する必要があります。
問題を解決する最も正しい方法は何ですか?
P.S.データベースへの要求の数は非常に重要です。
P.P.S.関係の子供の数は1kレコードの値を超えることができます。
あなたは 'P1 = P1&p2'をしたいですか? 'p1.childs = p1.childs&p2.childs'ですか? '&'は "combined"を意味します。その後、 'p2.destroy'が必要ですか? 'p2.childs.destroy_all'もしたいですか? –
正確に。私は合併したい。 'p1'に重複が存在しないすべての' p2'子が追加されなければならず、重複は削除されなければなりません。 – 0xDEADBEEF
'p2.children'のいくつかが削除されるかどうかをどうやって判断しますか? 'somerow'に既に重複があるのでしょうか? –