繁体   English   中英

在ruby上的deep_clone而不是克隆(浅拷贝)

[英]deep_clone in ruby on rails instead of clone ( shallow copy)

我为一个特定客户提供了一个推荐项目,我也必须为其他客户复制该推荐项目,因此我正在考虑将该项目Deep_clone到其他客户,以便从一个客户端删除该项目条目时也不会从其他客户端中删除(基本的深层复制概念)

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

这是我的代码

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

这种编组与克隆执行相同的操作,它提供相同的复制参数,所以有什么区别,克隆也进行深层复制吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM