Каков наилучший способ остановить переход с AASM - PullRequest
2 голосов
/ 11 марта 2009

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

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

Ответы [ 2 ]

5 голосов
/ 11 марта 2009

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

1 голос
/ 11 марта 2009

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

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

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

...