Ruby on rails Rails:复制记录及其多级关联?

Ruby on rails Rails:复制记录及其多级关联?,ruby-on-rails,associations,clone,duplicate-data,Ruby On Rails,Associations,Clone,Duplicate Data,我正在构建一个调查应用程序,并尝试构建一个复制功能,以便用户可以复制调查 我需要做的是复制调查、调查的问题和每个问题的答案(例如,多项选择选项) 以下是我的联想: #Survey has_many :questions #Question belongs_to :survey has_many :answers #Answer belongs_to :question 那么,如何复制/克隆调查及其关联 我正在运行Rails 3。类似于: #Survey has_many :question

我正在构建一个调查应用程序,并尝试构建一个复制功能,以便用户可以复制调查

我需要做的是复制调查、调查的问题和每个问题的答案(例如,多项选择选项)

以下是我的联想:

#Survey
has_many :questions

#Question
belongs_to :survey
has_many :answers

#Answer
belongs_to :question
那么,如何复制/克隆调查及其关联

我正在运行Rails 3。

类似于:

#Survey
has_many :questions, :autosave => true   # might need the autosaves, might not

#Question
belongs_to :survey
has_many :answers, :autosave => true

#Answer
belongs_to :question


class Survey < ActiveRecord::Base

  def deep_copy(klass)
     klass.questions.each do |question|
        @question = self.questions.build(:name => question.name)
        question.answers.each do |answer|
           @question.answers.build(:name => answer.name)
        end
     end
  end
end
@survey_to_copy = Survey.find(123)
@new_survey = Survey.new(:name => "new survey")
@new_survey.deep_copy(@survey_to_copy)
@new_survey.save

不确定它是否与Rails 3兼容,但您应该看看

我不明白这一点。你能解释一下发生了什么事吗?我不知道调查记录是怎么被克隆到这里的,肯定没用。它将每个原始问题的
survey\u id
设置为新创建的调查,而不是实际克隆问题。此外,它实际上没有克隆任何原始调查…它只是创建了一个没有任何数据的新调查。基本上,请使用新编辑重试,您只是在手动复制内容。您需要先创建调查,否则我认为您需要在关联中设置
:autosave=>true
选项。