Ruby on rails 获取回调Rails中的上一个对象 保存前的 旧模式=上一个实例模式 new_mode=new_instance.mode 如果是旧模式!=新模式 做点什么 结束 结束 def模式 如果field1=='something'&&field2=='otherthing' 返回“mode1” 结束 如果field3=='something'&&associated_record.field=='anyotherthing' 返回“mode2” 结束 结束 如果field3=='something'&&associated_record.field=='anyotherthing' 返回“mode2” 结束 结束

Ruby on rails 获取回调Rails中的上一个对象 保存前的 旧模式=上一个实例模式 new_mode=new_instance.mode 如果是旧模式!=新模式 做点什么 结束 结束 def模式 如果field1=='something'&&field2=='otherthing' 返回“mode1” 结束 如果field3=='something'&&associated_record.field=='anyotherthing' 返回“mode2” 结束 结束 如果field3=='something'&&associated_record.field=='anyotherthing' 返回“mode2” 结束 结束,ruby-on-rails,ruby,object,callback,Ruby On Rails,Ruby,Object,Callback,如果要在回调中调用前一个实例和新实例上的instance方法,需要做什么?正如您在代码中看到的,该方法是根据字段和相关记录字段值计算模式,我希望得到以前的模型和新模式。我知道'\u was'/'changes'方法可用于获取以前的值,但这是一个非常小的模式函数示例,我有很多字段和相关记录依赖项。不确定这是否正确,但它应该可以工作 使用attr_访问器, 例如: 或者您可以不使用attributes=方法,在调用save/update的地方,在分配属性之前,调用example.old\u mode

如果要在回调中调用前一个实例和新实例上的instance方法,需要做什么?正如您在代码中看到的,该方法是根据字段和相关记录字段值计算模式,我希望得到以前的模型和新模式。我知道'\u was'/'changes'方法可用于获取以前的值,但这是一个非常小的模式函数示例,我有很多字段和相关记录依赖项。

不确定这是否正确,但它应该可以工作

使用attr_访问器, 例如:


或者您可以不使用
attributes=
方法,在调用save/update的地方,在分配属性之前,调用
example.old\u mode=mode

我已经尝试过了,现在我将测试所有案例。非常感谢。不用担心,:)。
class Example

  attr_accessor: old_mode

  before_save
    if old_mode && old_mode != mode 
      do_something
    end
  end
  
  def attributes=(attribs)
    @old_mode = mode
    super
  end
    
  def mode
    do_calculation
  end
end