Ich habe folgende ModelleWie wird mit mehreren Modellen in einer Schienenform umgegangen?
class Survey < ActiveRecord::Base
has_many :survey_sections
accepts_nested_attributes_for :survey_sections
end
class SurveySection < ActiveRecord::Base
belongs_to :survey
has_many :questions
accepts_nested_attributes_for :questions
end
class Question < ActiveRecord::Base
belongs_to :survey_section
has_many :answers
belongs_to :question_group
accepts_nested_attributes_for :question_group
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
end
class QuestionGroup < ActiveRecord::Base
has_many :questions
end
Mein Controller:
def new
@survey = Survey.new
survey_section = @survey.survey_sections.build
survey_section.questions.build
end
def create
@survey = Survey.new(survey_params)
if @survey.save
redirect_to @survey, notice: 'Super'
else
render 'new'
end
end
def survey_params
params.require(:survey).permit(:title, :description, survey_sections_attributes:[:id, :title, questions_attributes:[:id, :text, answers_attributes:[:id, :text]]])
end
Wie es möglich ist, Daten in mehr als 3 Modelle zu retten? Im Moment kann ich aus meinen Umfrageformular Daten in die Umfrage, Umfrage und Frage-Modell speichern. Aber ich weiß nicht, was ich in der Steuerung, dass ich Daten in die anderen Modelle speichern kann.
Mein Vorschlag ist es, verschachtelte_Formulare zu vermeiden. Es ist so genannte Schienen Weg, aber es erhöht die Komplexität und Kupplung viel. Es ist besser, ein Formular mit ein wenig mehr Aufwand manuell zu erstellen und das Form-Objekt zu verwenden. Sie können diesen Ansatz googeln. – vladra