ruby-on-rails deep_cloneable gem(克隆关联的活动记录)

pqwbnv8z  于 11个月前  发布在  Ruby
关注(0)|答案(1)|浏览(117)

我希望能够克隆类A的对象沿着所有(克隆的)B、C和D关联。


的数据
我有A、B和D类:
A有许多B
A有_多个C
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的额外集合被复制(一个集合与新的Bs相关联但不与新的Cs相关联,并且一个集合与新的Cs相关联但不与新的Cs相关联)。
我可以用deep_cloneable gem直接实现我想要的吗?

h6my8fg2

h6my8fg21#

(A.first.deep_clone include: [ {bs: :ds}, { cs: :ds} ], use_dictionary: true).save

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

相关问题