创建给定模块时创建所有子项

时间:2011-11-09 18:19:34

标签: ruby-on-rails-3 activerecord callback

我有一个Rails 3应用程序,模型之间有以下关系:

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

当用户加入Course我有这个:

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

每个Enrollment也总是有用户和课程

问题:如何在为用户创建Enrollment时强制执行,系统继续为给定的每个模块创建ModuleStatus Course有?

我应该使用回调来强制执行此创建吗?

如果是这样,这里有什么回调?会是after_create吗?

谢谢!

1 个答案:

答案 0 :(得分: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