ActiveRecord: How can I clone nested associations?

前端 未结 5 1153
星月不相逢
星月不相逢 2020-12-05 18:17

I\'m currently cloning a single-level association like this:

class Survey < ActiveRecord::Base
  def duplicate
    new_template = self.clone
    new_templ         


        
5条回答
  •  醉梦人生
    2020-12-05 18:21

    Without using gems, you can do the following:

    class Survey < ApplicationRecord
      has_and_belongs_to_many :questions
    
      def copy_from(last_survey)
        last_survery.questions.each do |question|
          new_question = question.dup
          new_question.save
    
          questions << new_question
        end
    
        save
      end
      …
    end
    

    Then you can call:

    new_survey = Survey.create
    new_survey.copy_from(past_survey)
    

    That will duplicate all questions from last Survey to new Survey and tie them.

提交回复
热议问题