ruby-on-rails-3 – 确定在Rails回调中是否添加/删除了子项

场景:

我有一个habtm关系,并想确定是否已添加或删除了一个方向的孩子.我正在尝试使用回调,但发现我没有对孩子们进行更改的记录.有什么像course.students.changed?

使用:

> Rails 3.0.3
> Ruby 1.9.2p0

表:

学生 – id,first_name,last_name
课程 – 身份证,姓名,地点
courses_students – course_id,student_id

楷模:

class Course
  # Callbacks
  before_save :student_maintenance

  # Relationships
  has_and_belongs_to_many :students

  protected
  def student_maintenance
    # I want to do something like
    students.changed?
      students.changes.each do |student|
        if marked_for_deletion
          # do something
        elsif marked_for_addition
          # do something else
        end
      end
    end
  end
end

class Student
  # Relationships
  has_and_belongs_to_many :courses
end

最佳答案 如果您想要在课程中添加或删除学生时捕获,为什么不使用连接表*课程_学生*?由于这是实际创建或销毁条目的地方,因此可以在那里轻松使用after_create / after_destroy回调.

点赞