Я получаю следующую ошибку при попытке создать связанную дочернюю запись через родителя с помощью «accepts_nested_attributes_for»:
ActiveRecord :: RecordInvalid (валидация завершилась неудачно: опрос с подробностями опроса не может быть пустым, должна существовать деталь с подробностями опроса об опросе):
Хотите знать, если я пропустил какой-либо кусок для создания дочерней записи автоматически?
Пример ввода: (первые 4 клавиши в приведенном ниже вводе объединяются в хэш параметров перед сохранением)
{: organization_id => "жестко закодировано",: activity_library_type => 0,: creation_by => "жестко закодировано",: updated_by => "жестко закодировано", "Activity_name" => "SS-28", "описание" => "", "content_path_url" => "", "activity_status" => 0, "activity_type" => 4, "group" => "group", "code_level" => "code", "topic" => "topic "," solution "=>" solution "," survey_question_details_attributes "=> [{" question "=>« Question1 »,« order »=> 1,« question_type »=> 0}]}
Параметры:
params.require (: activity_detail) .permit (: имя_ действия,: описание,
: content_path_url,: activity_status,: activity_type,: group,: code_level,: topic,: solution,: duration_seconds,: survey_question_details_attributes => [: id,: question,: order,: question_type,: _ destroy])
Ниже представлен контроллер и модели (в каждом задании содержится много вопросов):
class ActivityController < ApplicationController
def create
# Merged additional_attributes hash to content_params recieved from front end (first 4 keys mentioned above in sample input)
full_activity_details_record = additional_attributes.merge(content_params)
response = ActivityDetail.create(full_activity_details_record)
end
end
class ActivityDetail < ApplicationRecord
has_many :survey_question_details, dependent: :destroy, foreign_key: :survey_id
accepts_nested_attributes_for :survey_question_details
validates :activity_name, :organization_id,
:activity_library_type, :activity_status, :activity_type,
:created_by, :updated_by, presence: true
validates :activity_name, uniqueness: { case_sensitive: false }, length: { maximum: 55 }
validates :description, length: { maximum: 160 }
end
class SurveyQuestionDetail < ApplicationRecord
belongs_to :activity_detail, foreign_key: :survey_id
validates :question, :survey_id, :question_type, :order, presence: true
default_scope { order(:order) }
end