创建实例后检查相关关系

时间:2010-02-22 19:28:02

标签: ruby-on-rails

我有一个架构:

学生

  • has_and_belongs_to_many:courses
  • has_many:成绩,:依赖=> :破坏
  • has_many:assignments,:through => :等级

课程

  • has_many:assignments,:dependent => :破坏
  • has_and_belongs_to_many:学生

分配

  • belongs_to:course
  • has_many:成绩,:依赖=> :破坏
  • has_many:学生,:通过=> :等级

等级

  • belongs_to:student
  • belongs_to:assignment

我想添加功能,如果添加成绩并且学生不属于成绩分配所属的课程,则会建立此关系。有关最佳方法的建议吗? grade_courses表没有自己的模型,是否需要进行此操作?

朋友建议使用after_create,但我不知道如何将参数传递给它。

1 个答案:

答案 0 :(得分:2)

成绩观察者怎么样?像这样的东西

class GradeObserver < ActiveRecord::Observer

  def after_create(grade)
    unless grade.assignment.course.students.include?(grade.student)
      grade.assignment.course.students << grade.student 
    end
  end

end