我目前正在克隆这样的单级关联:
class Survey < ActiveRecord::Base
def duplicate
new_template = self.clone
new_template.questions << self.questions.collect { |question| question.clone }
new_template.save
end
end
Run Code Online (Sandbox Code Playgroud)
因此克隆那个Survey克隆Questions与该调查相关联.精细.这非常有效.
但我遇到的问题是每个问题has_many Answers.所以Survey has_many Questions which has_many Answers.
我无法弄清楚如何正确克隆答案.我试过这个:
def duplicate
new_template = self.clone
self.questions.each do |question|
new_question = question.clone
new_question.save
question.answers.each do |answer|
new_answer = answer.clone
new_answer.save
new_question.answers << answer
end
new_template.questions << question
end
new_template.save
end
Run Code Online (Sandbox Code Playgroud)
但实际上替换原始答案然后创建新答案会产生一些奇怪的东西,因此ID会正确地停止匹配.
activerecord clone ruby-on-rails associations ruby-on-rails-3