ruby-on-rails - 在模型中,Ruby on Rails 跳过特定方法的更新回调

  显示原文与译文双语对照的内容
0 0

我的学生模型触发了一个方法 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 0

你可以使用update_columns更新colums而不触发回调或者验证。

在你的情况下


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

...