当在成功调用方法或进入状态转换阶段抛出错误时,捕获此错误并确保状态恢复到先前状态的最佳方法是什么。
我正在使用 AASM gem。
如何使用 :guard 选项来确保可以执行转换?如果guard 方法返回false,则根本不执行转换。所以,我会首先检查保护方法是否满足转换的每个条件。
我没有使用过这个插件,但是阅读了代码,除非我弄错了,似乎没有任何机制可以传达这些回调中的任何一个都失败了。
对于回调,这对我来说完全有意义success
,因为只有在转换实际发生时才调用它,到那时恢复为时已晚。如果您希望在success
回调中引发异常以防止转换,也许代码应该进入转换本身而不是success
回调......?或者也许你需要一个额外的状态......?
关于enter
回调,guard
回调不是更合适吗……?如果过渡不应该继续,您可以返回 false。