Rails 活动记录:“attribute_before_last_save”与“attribute_was”

Abh*_*ava 4 activerecord ruby-on-rails

所以我正在调试我面临的一个问题,我正在努力理解为什么attribute_before_last_save文档中的工作方式不同attribute_was,我所能得到的只是 行为与我相似,但在我的情况下,我得到了一个和另一个正确的价值。attribute_before_last_saveattribute_wasnil

小智 5

attibute_before_last_save 只有在成功将数据保存到数据库后才能工作。

如果您在保存前有回调,则应使用attibute_was.


eug*_*ene 4

attribute_before_last_save(attr_name):返回上次保存之前属性的原始值。行为与 attribute_was 类似。此方法在回调 非常有用,可在刚刚发生的保存之前获取属性的原始值

在回调受他们影响之后

假设用户模型具有name属性:

class User < ApplicationRecord
  after_update :find_name_before_last_save

  def find_name_before_last_save
    puts "+++++++++++++++"
    puts name_before_last_save
  end
end
Run Code Online (Sandbox Code Playgroud)