场景:
我有一个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回调.