deep_cloneable gem(克隆具有关联的 activerecord)

问题描述 投票:0回答:1

我希望能够克隆 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实现我想要的吗?

ruby-on-rails ruby deep-copy
1个回答
0
投票
(A.first.deep_clone include: [ {bs: :ds}, { cs: :ds} ], use_dictionary: true).save

这会创建我想要的重复项。语法在“词典”下的文档中列出,尽管我不能说我发现描述或“词典”术语很容易理解..

© www.soinside.com 2019 - 2024. All rights reserved.