我有一个特定客户的推荐项目,我也必须为其他客户复制该特定推荐项目条目,所以我想将该项目的deep_clone添加到其他客户端,以便当该项目条目从一个客户端也没有从其他客户端中删除(基本深层复制概念)
但是如何在ruby on rails上进行deep_copy并且正确的方法是使用deep_clone而不是克隆?
这是我的代码
@item = CuratedItem.find(params[:data_curated_id])
@duplicate =Marshal.load( Marshal.dump(@item) )
这种编组与克隆完全相同,它提供了相同的复制参数,那么克隆的差异是什么呢?
答案 0 :(得分:0)
您可能想要使用deep_cloneable
gem,https://github.com/moiristo/deep_cloneable
它适用于创建相关的ActiveRecord对象集,并且您可以指定您执行和不想克隆的关系,并保存它们的智能行为。我发现的唯一陷阱与克隆记录的创建顺序有关,可能与原始顺序不同。因此,如果你在order
属性周围有任何微妙的错误,deep_clone可能会很棘手。