Ruby Rails 跳过模型中特定方法的更新回调
Ruby on Rails skip update callback on specific method in model
在我的 Student 模型中,我触发了一个方法 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
有没有办法在方法内保存后跳过更新回调?
您可以使用 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
在我的 Student 模型中,我触发了一个方法 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
有没有办法在方法内保存后跳过更新回调?
您可以使用 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