Создание нескольких связанных записей после создания родительского объекта

У меня есть приложение, в котором пользователи создают встречи, и у каждой встречи есть набор навыков, прикрепленных к ним через таблицу Appointment_Skills. Есть около 50 или около того навыков, которые я хотел бы прикрепить к каждой встрече после создания. Поскольку форма встречи настолько велика, и есть так много вещей, которые нужно отслеживать, я предлагаю пользователям создать встречу с минимальной формой, а затем перенаправить на страницу редактирования, где у них есть доступ ко всей встрече. Я использую вложенные атрибуты для обновления Appointment и Appointment_Skills в форме редактирования.

Appointment
  has_many :skills, through: :appointment_skills 
  has_many :appointment_skills
  accepts_nested_attributes_for :appointment_skills
end

AppointmentSkill
  belongs_to :skill
  belongs_to :appointment     
end

Skill

end

Если я продолжу создавать несколько AppointmentSkills, то смогу использовать форму редактирования для обновления их атрибутов, но я не уверен, как автоматически создавать их после создания родителя.

Я думал о том, чтобы сначала получить счетчик всех навыков и идентификаторов, а затем использовать обратный вызов after_create для создания всех навыков AppointmentSkills, которые будут иметь идентификаторы навыков и идентификаторы назначений (только что созданных назначений).

Это возможно? Это странный способ сделать это?

1 ответ

Закончилось делать...

    after_create :assign_skills 

    def assign_skills
       skills = Skill.all
       skills.each do |skill|
       AppointmentSkill.create(:appointment_id => self.id, :skill_id => skill.id, :position => skill.priority)
    end
end
Другие вопросы по тегам