我想在保存模型后执行的rails中创建回调函数。如何从模型中检测属性更改?
我有这样的模型中,具有属性“状态”取决于权利要求的状态,可能的值之前,背书,核准这改变要求,拒绝
该数据库具有“国家”用默认'pending'的值。
我想在第一次创建模型或从一个状态更新到另一个状态之后执行某些任务,具体取决于它从哪个状态变化而来。
我的想法是在模型的函数:
after_save :check_state
def check_state
# if status changed from nil to pending (created)
do this
# if status changed from pending to approved
performthistask
end
我的问题是我怎么检查模型中的变化之前,前值?
保存模型后,这是行不通的,这是他要求的。 – 2012-06-27 15:37:40
@TomRossi,'dirty'调用在'after_save'中工作(都在Rails 2.3和3.x中)。我已经使用过好几次了。 – 2012-06-27 15:54:17
@TomRossi,在提交后重新设置脏标志,所以它们不会在Rails 3.x中引入的'after_commit'回调中可用。他们当然会在'after_save'中工作。 – 2012-06-27 15:56:07