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” 结束 结束
如果要在回调中调用前一个实例和新实例上的instance方法,需要做什么?正如您在代码中看到的,该方法是根据字段和相关记录字段值计算模式,我希望得到以前的模型和新模式。我知道'\u was'/'changes'方法可用于获取以前的值,但这是一个非常小的模式函数示例,我有很多字段和相关记录依赖项。不确定这是否正确,但它应该可以工作 使用attr_访问器, 例如: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
或者您可以不使用
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