6 activerecord ruby-on-rails callback
我有一个带有状态列的ActiveRecord模型.当模型以状态更改保存时,我需要写入历史文件,更改状态以及由谁负责更改.我认为after_save回调会很好用,但我不能使用status_changed?用于确定执行历史写入的动态方法.如果模型已保存但状态未更改,我不想写入历史记录.我现在处理它的唯一想法是使用实例变量标志来确定after_save是否应该执行.有任何想法吗?
Jor*_*ugh 10
自问题发布以来,这可能已经发生了变化,但是after_save回调应该具有*_changed?可用的动态方法并正确设置:
class Order
after_save :handle_status_changed, :if => :status_changed?
end
Run Code Online (Sandbox Code Playgroud)
要么
class Order
after_save :handle_status_changed
def handle_status_changed
return unless status_changed?
...
end
end
Run Code Online (Sandbox Code Playgroud)
适用于我的Rails 2.3.2.
我看到两个解决方案:
就像你说的:添加一个变量标志并在设置时运行回调。
更新记录后运行 save_history。
例子:
old_status = @record.status
if @record.update\_attributes(params[:record])
save_history_here if old_status != @record.status
flash[:notice] = "Successful!"
...
else
...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7647 次 |
| 最近记录: |