如何从模型类中获取所有state_machine事件?

时间:2012-03-05 10:01:41

标签: ruby-on-rails state-machine

是否可以从模型类中获取所有事件?我想按事件过滤列表。

所有过渡都有similar question on mailinglist

我正在使用https://github.com/pluginaweek/state_machine

3 个答案:

答案 0 :(得分:6)

在链接到它的github页面上,它显示了以下API方法:

vehicle.state_events  # shows all the events possible from the current state

vehicle.state_paths.events # shows all the events for an object

答案 1 :(得分:2)

由于某种原因,我接受的答案需要几秒钟来计算。我想如果你有很多州,就会发生这种情况。

对我有用的是:

Invoice.state_machines[:state].events.map(&:name)

在我的情况下,类名为invoice,state_machine名为state

答案 2 :(得分:0)

编辑2014:此列表说明,而不是事件

我就是这样做的,只列出了键

def self.membership_states
  self.state_machines[:membership_status].states.map(&:name)
end

$ User.membership_states
> [:applied, ...