我有一个看起来像这样的aasm事件:
event :close do
transitions from: :normal, to: :closed
after do
action_1(...)
action_2(...)
end
end
现在,当我打电话给我时,我注意到了! action2上有一个错误,该事件未保存在db中。我想事情的顺序是 1.实例的过渡 2.回调后 3.保存
除了在'after'块级别下捕获错误之外,是否存在我可以使用'save'后触发的回调?
答案 0 :(得分:1)
原因是aasm将保存包装到事务中,该事务回滚异常。
目前没有可用于您的回调,但我可以想象像
event :close do
transitions from: :normal, to: :closed
assure do
action_1(...)
action_2(...)
end
end
即使出现异常,也会执行action_1
和action_2
。
请向github repository添加一个问题,我将负责处理。