rubi on rails而不是clone(deep copy)

时间:2018-01-30 09:36:36

标签: ruby-on-rails ruby ruby-on-rails-4 rubygems clone

我有一个特定客户的推荐项目,我也必须为其他客户复制该特定推荐项目条目,所以我想将该项目的deep_clone添加到其他客户端,以便当该项目条目从一个客户端也没有从其他客户端中删除(基本深层复制概念)

但是如何在ruby on rails上进行deep_copy并且正确的方法是使用deep_clone而不是克隆?

这是我的代码

@item = CuratedItem.find(params[:data_curated_id])   
@duplicate =Marshal.load( Marshal.dump(@item) )

这种编组与克隆完全相同,它提供了相同的复制参数,那么克隆的差异是什么呢?

1 个答案:

答案 0 :(得分:0)

您可能想要使用deep_cloneable gem,https://github.com/moiristo/deep_cloneable

它适用于创建相关的ActiveRecord对象集,并且您可以指定您执行和不想克隆的关系,并保存它们的智能行为。我发现的唯一陷阱与克隆记录的创建顺序有关,可能与原始顺序不同。因此,如果你在order属性周围有任何微妙的错误,deep_clone可能会很棘手。