aasm:事件后回调中的错误取消了事件

时间:2013-11-19 12:44:40

标签: ruby-on-rails ruby callback aasm

我有一个看起来像这样的aasm事件:

event :close do
  transitions from: :normal, to: :closed
  after do
    action_1(...)
    action_2(...)
  end
end

现在,当我打电话给我时,我注意到了! action2上有一个错误,该事件未保存在db中。我想事情的顺序是 1.实例的过渡 2.回调后 3.保存

除了在'after'块级别下捕获错误之外,是否存在我可以使用'save'后触发的回调?

1 个答案:

答案 0 :(得分:1)

原因是aasm将保存包装到事务中,该事务回滚异常。

目前没有可用于您的回调,但我可以想象像

event :close do
  transitions from: :normal, to: :closed
  assure do
    action_1(...)
    action_2(...)
  end
end

即使出现异常,也会执行action_1action_2

请向github repository添加一个问题,我将负责处理。