我希望能够克隆 A 类的对象及其所有(克隆的)B、C 和 D 关联。
我有 A、B、C 和 D 类:
A 有很多 Bs
A 有_许多 Cs
A 有_许多 D 到 B
B 属于 A
B 有_许多 D
C 属于 A
C 有_许多 D
D 属于 B
D 属于 C
因此,例如 D 类的每个对象都有属性 b_id 和 c_id。
我希望能够克隆 A 类的对象及其所有(克隆的)B、C 和 D 关联。
按照 deep_cloneable 文档,我能得到的最接近的是:
A.first.deep_clone include: [ {bs: :ds}, :cs ].save
这会创建 A 对象的重复项及其 B 和 C 关联的重复项(根据需要)。 属于 B 的 D 也被复制并与新复制的 B 关联,但仍与原始 C 关联,而不是与新复制的 C 关联。
与
类似A.first.deep_clone include: [ {bs: :ds}, { cs: :ds} ].save
重复一组额外的 D(一组与新 B 关联但不与新 C 关联,一组与新 C 关联但不与新 C 关联)。
我可以直接用deep_cloneable gem实现我想要的吗?
(A.first.deep_clone include: [ {bs: :ds}, { cs: :ds} ], use_dictionary: true).save
这会创建我想要的重复项。语法在“词典”下的文档中列出,尽管我不能说我发现描述或“词典”术语很容易理解..