#ruby-on-rails-3 #activerecord #callback
#ruby-on-rails-3 #activerecord #обратный вызов
Вопрос:
У меня есть приложение Rails 3 со следующей взаимосвязью между моделями:
Course ---[ 1:n ]---> Module
И когда пользователь регистрируется в Course
, у меня есть это:
Enrollment ---[ 1:n ]---> ModuleStatus
У каждого Enrollment
также всегда есть пользователь и курс
ВОПРОС: Как я могу обеспечить, чтобы при Enrollment
создании для пользователя система продолжила и создала ModuleStatus
для каждого из модулей, которые есть у данного Course
модуля?
Должен ли я использовать обратный вызов для принудительного выполнения этого создания?
Если да, то какой обратный вызов здесь подходит? Было бы after_create
?
Спасибо!
Ответ №1:
Краткий ответ: да, использование after_create
, безусловно, имеет смысл. Вероятно, это будет выглядеть примерно так (очевидно, вы можете заполнить детали вашего моделирования).
class Enrollment
belongs_to :user
belongs_to :course
has_many :module_statuses
after_create :generate_module_statuses
def generate_module_statuses
self.course.modules.each do |module|
self.module_statuses.create(:the_correct_attributes)
end
end
end