如何在AASM中建立州级警卫

时间:2016-08-01 02:08:04

标签: ruby-on-rails aasm

有没有办法在任何情况下定义在进入状态(例如has_legs?)之前检查过的守卫(例如running)?

在所有可能的回调列表中,有事件和转换的保护,但不是事件。

我尝试对模型进行条件验证。它在事件执行中起作用,但不适用于aasm方法(例如may_run?)。

1 个答案:

答案 0 :(得分:0)

我不知道构建方法。我会使用包含默认选项的Hash的变通方法。

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