Создание всех дочерних элементов при создании данного модуля - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть приложение Rails 3 со следующими отношениями между моделями:

Course ---[ 1:n ]---> Module

И когда пользователь регистрируется в Course, у меня есть это:

Enrollment ---[ 1:n ]---> ModuleStatus

Каждая *У 1008 * также всегда есть пользователь и курс

ВОПРОС : Как я могу добиться, чтобы при создании Enrollment для пользователя система работала и создавала ModuleStatusдля каждого из модулей, которые есть у данного Course?

Должен ли я использовать обратный вызов для принудительного создания этого создания?

Если да, то какой обратный вызов здесь подходит?Это будет after_create?

Спасибо!

1 Ответ

1 голос
/ 09 ноября 2011

Краткий ответ: да, использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...