Создание нескольких связанных записей после создания родительского объекта
У меня есть приложение, в котором пользователи создают встречи, и у каждой встречи есть набор навыков, прикрепленных к ним через таблицу 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