在我的学生模型中,我触发方法after_update
,但问题是我必须在方法中保存。这导致无限递归循环:
class Student < ActiveRecord::Base
after_update :delete_inactive_student_schedules
def delete_inactive_student_schedules
if self.status_was == active and self.status == paused
self.missing_schedule_at = nil
self.save!
self.schedules.destroy_all
end
end
有没有办法在方法中保存后跳过更新回调?
答案 0 :(得分:1)
您可以使用update_columns更新列,而不会触发回调或验证。
所以在你的情况下
if self.status_was == active and self.status == paused
self.update_columns(:missing_schedule_at => nil)
self.schedules.destroy_all
end
http://apidock.com/rails/ActiveRecord/Persistence/update_columns