如何在 AASM 中设置州级警卫
How to set up a guard at the state level in AASM
有没有办法定义在任何情况下进入状态(例如running
)之前检查的守卫(例如has_legs?
)?
在所有可能的回调列表中,有事件和转换的守卫,但没有事件的守卫。
我尝试对模型进行条件验证。它在事件执行中起作用,但不适用于 aasm 方法(例如 may_run?
)。
我不知道内置方法。我会使用包含默认选项的哈希的解决方法。
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
有没有办法定义在任何情况下进入状态(例如running
)之前检查的守卫(例如has_legs?
)?
在所有可能的回调列表中,有事件和转换的守卫,但没有事件的守卫。
我尝试对模型进行条件验证。它在事件执行中起作用,但不适用于 aasm 方法(例如 may_run?
)。
我不知道内置方法。我会使用包含默认选项的哈希的解决方法。
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