2016-08-01 3 views
7

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

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

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

+0

Вы не можете найти себе код? –

ответ

0

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

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