StateMachine 库中有一个方法可以获取状态列表:
ModelName.state_machines[:name_of_state].states.map &:name
或者
ModelName.state_machines.states.map &:name
当包含状态的属性名称是默认的“状态”时。
但是,我想知道是否有办法找到最终的状态机,因为如果你用
rake state_machine:draw FILE=model.rb CLASS=ModelName
最后的状态是双圈的。乍一看,我无法从 rake 任务的来源中获得它。
获取初始状态似乎很容易:
ModelName.state_machines[:name_of_state].states.select(&:initial).map(&:name)
更新:
哦,德拉斯!这很简单:
ModelName.state_machines[:name_of_state].states.select(&:final?).map(&:name)
留给未来的 Google 员工!