使用AASM停止转换的最佳方法是什么?

时间:2009-03-11 15:46:44

标签: ruby-on-rails ruby aasm

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

我正在使用AASM宝石。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

这对success回调对我来说是完全合理的,因为它只在转换实际发生时被调用,到时为止还为时已晚。如果您希望在success回调中引发异常以阻止转换,那么代码应该在转换本身而不是success回调中...?或许你需要一个额外的状态......?

关于enter回调,guard回调不是更合适......?如果转换不应该继续,则可以返回false。