AASM:来自任何州的过渡?

gjb*_*gjb 29 ruby ruby-on-rails aasm ruby-on-rails-3

我正在使用AASM.是否有可能从任何州过渡?例如:

aasm_event :publish do
  transitions :to => :publish, :from => ANY_STATE
end
Run Code Online (Sandbox Code Playgroud)

我知道可以传递一系列状态:from,但这不是我所追求的.我试过:from完全省略了,但是没有用.

swr*_*bel 72

aasm现在支持没有任何from指定的转换,这将允许从任何状态转换.

aasm_event :publish do
  transitions to: :publish # from ANY
end
Run Code Online (Sandbox Code Playgroud)

(吹牛的权利:我添加了这个功能,因为我需要它)

  • 感谢您将该功能添加到代码库中.所有AASM版本> = 3.0.10现在包括此内容. (5认同)

vis*_*ise 5

您可以通过aasm_states类方法获取状态,前提是它们已在代码中先前定义过.

aasm_event :publish do
  transitions :to => :publish, :from => aasm_states.map(&:name)
end
Run Code Online (Sandbox Code Playgroud)

  • 谢谢答案,但感觉很糟糕.AASM应该支持:all或:any. (5认同)