Ruby on Rails глубокое копирование / глубокое клонирование объекта и его атрибутов

Я хотел бы сделать глубокую копию объектов, включая все атрибуты.

Experiment_old имеет 10 испытаний. И я хочу скопировать все в Experiment_new с 10 испытаниями. Experiment_old также должен хранить информацию о 10 пробных версиях.

Тем не менее, все случаи, которые я пробовал ниже, они все копируют хорошо, но у Exper_old нет информации о 10 испытаниях. Они просто появляются на экспериментальной_новке.

Как лучше всего делать глубокое копирование для этих случаев.

case 1:

@experiment_new = Experiment.create(@experiment_old.attributes.merge(:trials => experiment_old.trails))

case 2:

@experiment_new = Marshal.load(Marshal.dump(@experiment_old.trials))

case 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
17
задан Jason Swett 18 September 2019 в 18:36
поделиться