【问题标题】:Ruby on Rails skip update callback on specific method in modelRuby on Rails 跳过模型中特定方法的更新回调
【发布时间】:2015-02-13 22:30:02
【问题描述】:

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

有没有办法跳过方法内保存后的更新回调?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 activerecord callback


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 2017-11-08
      • 2015-06-14
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多