Rails - 如何从after_save回调中查看旧模型值和新模型值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails - 如何从after_save回调中查看旧模型值和新模型值?相关的知识,希望对你有一定的参考价值。
假设我有以下型号:
class V < ActiveRecord::Base
belongs_to :p
after_save :after_save_v
...
end
class P < ActiveRecord::Base
has_many :vs
# Has an attribute called "score" (defined in the DB table)
...
end
创建一个V会使v.p.score
增加1.现在在我的after_save_v
中,我想跟踪p.score
的旧值。我怎样才能做到这一点?
使用p.score_was不起作用。
class V < ActiveRecord::Base
def after_save_v
puts p.score_was # => 1
puts p.score # => 1
end
end
我在这里错过了什么?或者这是after_save回调无法实现的?
答案
在after_save
中,如果使用changes
方法,它将返回对象上所有更改的哈希值。您可以指定所需的属性更改。这将是一个数组。 [旧价值,新价值]
在您的示例中,它可以是self.p.changes["score"]
。这将返回一个数组[0, 1]
,其中0
是旧值,1
是新值
以上是关于Rails - 如何从after_save回调中查看旧模型值和新模型值?的主要内容,如果未能解决你的问题,请参考以下文章