我想对包括所有属性的对象进行深层复制.
experiment_old有10个试验.我希望通过10次试验将所有内容复制到experiment_new中.experiment_old还应该保留10个试用信息.
但是,我在下面尝试过的所有情况都会很好地复制一切,但是experiment_old没有10个试验信息.他们只是出现在experiment_new上.
对这些案例进行深层复制的最佳方法是什么.
情况1:
@experiment_new = Experiment.create(@experiment_old.attributes.merge(:trials => experiment_old.trails))
Run Code Online (Sandbox Code Playgroud)
案例2:
@experiment_new = Marshal.load(Marshal.dump(@experiment_old.trials))
Run Code Online (Sandbox Code Playgroud)
案例3:
@experiment_new = @experiment_old.clone
Run Code Online (Sandbox Code Playgroud)
这是模型:
class Experiment < ActiveRecord::Base
belongs_to :experimenter
has_many :trials
has_many :participants
end
class Trial < ActiveRecord::Base
belongs_to :experiment
belongs_to :datum
belongs_to :condition
has_one :result_trial
end
Run Code Online (Sandbox Code Playgroud)