use*_*696 11 ruby-on-rails before-save
我试图before_save
通过在我的值中添加"_was" 来获得旧值,但它似乎不起作用.
这是我的代码:
before_save :get_old_title
def get_old_title
puts "old value #{self.title_was} => #{self.title}"
end
Run Code Online (Sandbox Code Playgroud)
"title_was"和"title"都获得了新标题.
是否有可能获得旧的价值before_save
?
而不是before_save
使用before_update
.它现在应该工作.
小智 6
因此,上面的答案可能有效,但是如果我出于某种原因想要获取先前的值并使用它来执行某些任务,那么您将需要获取先前的值。就我而言,我使用了这个
after_update do
if self.quantity_changed?
sku.decrement(:remaining, (self.quantity_was - self.quantity) * sku.quantity)
end
end
Run Code Online (Sandbox Code Playgroud)
_was 和_changed?添加到任何列都会完成工作以完成工作。
获得相同值的原因很可能是因为在创建记录时检查了输出。回调before_save
是呼吁两国create()
和update()
但create()
两者title
并title_was
分配相同,初始值。因此答案是“是的,您可以在内部获取旧值before_save
”,但是您必须记住,只有在实际更改记录的情况下,它才会与当前值不同。这意味着您得到的结果是正确的,因为在创建记录时不会发生有问题的更改。
归档时间: |
|
查看次数: |
5945 次 |
最近记录: |