【问题标题】:How to determine changed attributes on after_save callback如何确定 after_save 回调的更改属性
【发布时间】:2021-11-21 08:11:59
【问题描述】:

我无法在 after_save 回调中捕获更改的属性,但我可以在 after_update 回调中捕获它们。我认为 after_save 只是 after_create 和 after_update 的组合。如果有人至少给我一个提示,我将不胜感激。

class Student < ApplicationRecord

  after_save: after_save_callback


  def after_save_callback
    if username_changed?  ### This is always false
      # do something
    end
  end

end
student = Student.create(name: 'John Doe', username: 'abcdef')

student.username = '123456'
student.save

我的 Rails 版本是 5.0.7。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

    您可以使用saved_change_to_username?

    attribute_changed? 在 after 回调中的行为将在下一版本的 Rails 中改变。新的返回值将反映在 save 返回后调用该方法的行为(例如,与现在返回的相反)。要保持当前行为,请改用saved_change_to_attribute?

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多