2010-11-09 95 views
41

我们在项目中使用state_machine(https://github.com/pluginaweek/state_machine),并希望提供一个表单,让我们选择一个状态。 (这是为了搜索,而不是设置)。 我似乎无法找到一种方式列出所有可能的状态?当然,应该有一种自动的方式来做到这一点,而不必在某个地方对文本列表进行硬编码。 谢谢!获取state_machine状态列表

回答

66

喜欢的东西:

User.state_machine.states.map &:name 
+0

谢谢!这就是诀窍。 – phil 2010-11-09 23:05:32

64

只需添加到这个(因为我一直在寻找这个答案,我总是回到这个页面),如果你想列出会员国为给状态机,试试这个:

Discussion.state_machines[:name_of_state].states.map &:name 
+4

谢谢,这样好多了。接受的答案只处理我猜测的默认值,而且我需要我的自定义字段“状态”的状态。再次感谢! – 2011-03-30 19:55:27

+0

确保在你的类中使用状态机声明之后,这条线会出现。 – 2011-08-25 15:55:14

5

如果不同的命名状态字段,如publish_status

Article.state_machines[:publish_status].states.map &:name