gpt4 book ai didi

ruby-on-rails - ActiveRecord:如何克隆嵌套关联?

转载 作者:行者123 更新时间:2023-12-03 10:36:20 25 4
gpt4 key购买 nike

我目前正在克隆这样的单级关联:

class Survey < ActiveRecord::Base
def duplicate
new_template = self.clone
new_template.questions << self.questions.collect { |question| question.clone }
new_template.save
end
end

这样就克隆了 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

但这确实做了一些奇怪的事情,实际上替换了原始答案然后创建了新答案,因此 ID 停止正确匹配。

最佳答案

使用 deep_clonable gem

new_survey = original_survey.clone :include => [:questions => :answers]

关于ruby-on-rails - ActiveRecord:如何克隆嵌套关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com