【问题标题】:Universal object cloning solution通用对象克隆解决方案
【发布时间】:2010-12-01 17:06:50
【问题描述】:

我需要一个通用的克隆解决方案,以在 Ruby 中深度克隆一个包含所有实例变量的模块。我不能真正使用.clone 方法,因为它不适用于 activerecord 对象(不复制 id 字段)。

我还看到了使用 marshal dump + marshal load 的解决方法,但它不适用于模块和单例对象。有谁知道深度克隆模块的任何解决方案?或者,也许你对我的真正问题有另一种解决方案。

我有一个设置了实例变量的模块,我需要将它克隆到另一个模块,修改克隆对象中的对象,然后再次克隆第一个模块,而第二个模块没有进行任何更改。

【问题讨论】:

    标签: ruby clone


    【解决方案1】:

    对于 ActiveRecord 对象,您可以使用 dup 而不是 clone,但 dup 不会复制单例方法(在对象上定义)+ 它将冻结状态更改为受污染的方法。

    对于 Rails,您也有用于 ActiveRecord 克隆的 Deep cloning 插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2011-01-10
      • 2012-06-19
      • 2011-11-07
      • 2020-10-19
      • 1970-01-01
      相关资源
      最近更新 更多