Я хотел бы сделать глубокую копию объектов, включая все атрибуты.
Эксперимент_old имеет 10 испытаний. И я хочу скопировать все на эксперимент_new с 10 испытаниями. experiment_old также должна содержать 10 пробных данных.
Тем не менее, во всех случаях, которые я пробовал ниже, они копируют все хорошо, но у экспериментального_сообщества нет 10 пробных данных. Они просто появляются на эксперименте_new.
Каков наилучший способ сделать глубокую копию для этих случаев.
случай 1:
@experiment_new = Experiment.create(@experiment_old.attributes.merge(:trials => experiment_old.trails))
случай 2:
@experiment_new = Marshal.load(Marshal.dump(@experiment_old.trials))
случай 3:
@experiment_new = @experiment_old.clone
Вот модель:
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