Как настроить охрану на государственном уровне в 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