1

我有一个如下所示的 aasm 事件:

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

现在,我注意到当我关闭时!action2 出现错误,事件未保存在数据库中。我猜事情的顺序是 1. 实例的转换 2. 回调之后 3. 保存

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

4

1 回答 1

1

这样做的原因是 aasm 将保存包装到事务中,该事务在异常时回滚。

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

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

action_1即使在出现异常的情况下action_2也会在哪里执行。

请向github 存储库添加一个问题,我会处理的。

于 2013-11-20T20:31:27.060 回答