通用对象克隆解决方案

时间:2009-09-26 20:32:45

标签: ruby clone

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

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

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

1 个答案:

答案 0 :(得分:0)

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

至于Rails,你也有ActiveRecord克隆的Deep cloning插件。