2009-03-11 3 views
2

Когда метод, вызываемый при успешном запуске или вводимый фазами ошибки перехода состояния, бросает ошибки, что является лучшим способом поймать это и гарантировать, что состояние вернется к предыдущему государство.Каков наилучший способ остановить переход с помощью AASM

Я использую драгоценный камень AASM.

ответ

5

Как использовать опцию: guard, чтобы убедиться, что переход может быть выполнен? Если метод guard возвращает false, переход вообще не выполняется. Итак, я бы проверял, соблюдается ли каждое условие перехода с помощью метода защиты.

1

Я не использовал этот плагин, но, прочитав код, если я не ошибаюсь, не существует какого-либо механизма для сообщения о том, что любой из этих обратных вызовов потерпел неудачу.

Это имеет для меня полный смысл для обратного вызова success, потому что он вызывается только после того, как переход действительно произошел, и к тому времени уже слишком поздно возвращаться. Если вы хотите исключение, возникшее в вашем обратном вызове success, чтобы предотвратить переход, возможно, код должен идти в самом переходе, а не в обратном вызове success ...? Или, может быть, вам нужно дополнительное состояние ...?

Что касается обратного вызова enter, будет ли обратный вызов guard более уместным ...? Вы можете вернуть false, если переход не должен идти вперед.

Смежные вопросы