2

当在成功调用方法或进入状态转换阶段抛出错误时,捕获此错误并确保状态恢复到先前状态的最佳方法是什么。

我正在使用 AASM gem。

4

2 回答 2

5

如何使用 :guard 选项来确保可以执行转换?如果guard 方法返回false,则根本不执行转换。所以,我会首先检查保护方法是否满足转换的每个条件。

于 2009-03-11T16:19:27.907 回答
1

我没有使用过这个插件,但是阅读了代码,除非我弄错了,似乎没有任何机制可以传达这些回调中的任何一个都失败了。

对于回调,这对我来说完全有意义success,因为只有在转换实际发生时才调用它,到那时恢复为时已晚。如果您希望在success回调中引发异常以防止转换,也许代码应该进入转换本身而不是success回调......?或者也许你需要一个额外的状态......?

关于enter回调,guard回调不是更合适吗……?如果过渡不应该继续,您可以返回 false。

于 2009-03-11T16:23:49.830 回答