【发布时间】:2009-03-11 15:46:43
【问题描述】:
当在成功调用方法或进入状态转换阶段抛出错误时,捕获此错误并确保状态恢复到先前状态的最佳方法是什么。
我正在使用 AASM gem。
【问题讨论】:
标签: ruby-on-rails ruby aasm
当在成功调用方法或进入状态转换阶段抛出错误时,捕获此错误并确保状态恢复到先前状态的最佳方法是什么。
我正在使用 AASM gem。
【问题讨论】:
标签: ruby-on-rails ruby aasm
如何使用 :guard 选项来确保可以执行转换?如果guard 方法返回false,则根本不执行转换。所以,我会先检查一下这个转换的每个条件是否都满足了 guard 方法。
【讨论】:
model_instance.may_event_name?。这是因为may_event_name? 将运行保护代码以检查是否可以进行转换,如果这些检查依赖于在事件触发后运行的代码,则它们还没有运行并且保护将失败,因此返回false 为may_event_name?
我没有使用过这个插件,但是阅读了代码,除非我弄错了,似乎没有任何机制可以传达这些回调中的任何一个都失败了。
对于success 回调,这对我来说是完全有意义的,因为只有在转换实际发生时才调用它,此时恢复为时已晚。如果您希望在 success 回调中引发异常以防止转换,那么代码可能应该进入转换本身而不是 success 回调......?或者也许你需要一个额外的状态......?
关于enter 回调,guard 回调不是更合适吗...?如果过渡不应该继续,您可以返回 false。
【讨论】: