当成功调用方法或进入状态转换的阶段抛出错误时,捕获它的最佳方法是什么,并确保状态恢复到先前的状态。
我正在使用AASM宝石。
答案 0 :(得分:5)
如何使用:guard选项确保可以执行转换?如果guard方法返回false,则根本不执行转换。所以,我先检查一下转换的每个条件是否都符合保护方法。
答案 1 :(得分:1)
我没有使用这个插件,但是读取代码,除非我错了,似乎没有任何机制可以传达这些回调中的任何一个失败。
这对success
回调对我来说是完全合理的,因为它只在转换实际发生时被调用,到时为止还为时已晚。如果您希望在success
回调中引发异常以阻止转换,那么代码应该在转换本身而不是success
回调中...?或许你需要一个额外的状态......?
关于enter
回调,guard
回调不是更合适......?如果转换不应该继续,则可以返回false。