2011-06-22 15 views
2

アンケートを作成し、ユーザーがアンケートを複製できるように複製機能を構築しようとしています。Rails:レコードとその複数レベルの関連付けを複製しますか?

私がする必要があるのは、アンケート、そのアンケートの質問、および各質問の回答(複数の選択肢など)です。

ここに私の団体は以下のとおりです。だから、

#Survey 
has_many :questions 

#Question 
belongs_to :survey 
has_many :answers 

#Answer 
belongs_to :question 

は、どのように私は/複製することができますクローンの調査だけでなく、その関連は?

私はRailsのを実行している3.

答えて

1

のような何か:

#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 

だから、ような何か、それを使用する:それはRailsは3互換かどう

@survey_to_copy = Survey.find(123) 
@new_survey = Survey.new(:name => "new survey") 
@new_survey.deep_copy(@survey_to_copy) 
@new_survey.save 
+0

私はこれに従っていません。何が起こっているのか説明できますか?私は調査記録がどのようにここにクローン化されるのか分かりません。 – Shpigford

+0

間違いなく動作しました。実際に質問を複製するのではなく、新たに作成された調査に元々の質問の「survey_id」を設定しました。 – Shpigford

+0

それは実際に元の調査のクローンを実際には作成していませんでしたが、データなしで新しい調査が作成されました。 – Shpigford

関連する問題