我需要一个通用克隆解决方案来深入克隆一个模块,其中包含Ruby中的所有实例变量。我不能真正使用.clone
方法,因为它不适用于activerecord对象(不复制id字段)。
我还看到了使用marshal dump + marshal load的解决方法,但它不适用于模块和单例对象。有谁知道深度克隆模块的任何解决方案?或许你可以为我的真正问题找到另一种解决方案。
我有一个设置了实例变量的模块,我需要将其克隆到另一个模块,修改克隆对象中的对象,然后再次克隆第一个模块,而不需要对第二个模块进行更改。
答案 0 :(得分:0)
您可以对ActiveRecord对象使用dup
而不是clone
,但dup不会复制单例方法(在对象上定义)+它会将冻结状态更改为受污染的状态。
至于Rails,你也有ActiveRecord克隆的Deep cloning插件。