当前位置:  开发笔记 > 编程语言 > 正文

Rails after_save回调创建基于column_changed的关联模型?

如何解决《Railsafter_save回调创建基于column_changed的关联模型?》经验,为你挑选了2个好方法。

我有一个带有状态列的ActiveRecord模型.当模型以状态更改保存时,我需要写入历史文件,更改状态以及由谁负责更改.我认为after_save回调会很好用,但我不能使用status_changed?用于确定执行历史写入的动态方法.如果模型已保存但状态未更改,我不想写入历史记录.我现在处理它的唯一想法是使用实​​例变量标志来确定after_save是否应该执行.有任何想法吗?



1> Jordan Broug..:

自问题发布以来,这可能已经发生了变化,但是after_save回调应该具有*_changed?可用的动态方法并正确设置:

class Order
  after_save :handle_status_changed, :if => :status_changed?
end

要么

class Order
  after_save :handle_status_changed
  def handle_status_changed
    return unless status_changed?
    ...
  end
end

适用于我的Rails 2.3.2.



2> Andrew Watt..:

before_save改为使用回调.然后,您可以访问新旧状态值.回调包含在事务中,因此如果保存失败或被另一个回调取消,则历史写入也将回滚.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有