Как настроить охрану на государственном уровне в AASM

Есть ли способ определить охрану (например, has_legs?), который проверяется перед входом в состояние (например, running) в любом случае?

В списке всех возможных обратных вызовов есть охранники для событий и переходов, но не для событий.

Я попытался сделать условную проверку для модели. Это работало при выполнении события, но не для методов AASM (например, may_run?).

1 ответ

Решение

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

DEFAULT_EVENT_OPTS = { guard: ... }
DEFAULT_TRANSITION_OPTS = { ... }

event :clean, DEFAULT_EVENT_OPTS.merge({ ... }) do
  transitions DEFAULT_TRANSITION_OPTS.merge({:from => :running, :to => :cleaning, :guard => :cleaning_needed?})
end
Другие вопросы по тегам