获取状态机状态列表

51

我们在项目中使用了 state_machine,希望能提供一个表单,其中包含一个下拉框,让我们选择一个状态(这是用于搜索而非设置的)。 我找不到一种列出所有可能状态的方法?肯定应该有一种自动化的方式来实现这个,而不是手动在某个地方编写文本列表。 谢谢!

3个回答

78

类似这样:

User.state_machine.states.map &:name

72

补充一下(因为我一直在查找这个答案,而且我总是回到这个页面),如果你想列出给定状态机的状态,请尝试这样做:

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

4
谢谢,这样好多了。我猜那个被接受的回答只适用于默认设置,而我需要自定义字段“状态”的状态。再次感谢! - Jaime Bellmyer
如果在类中使用此行,请确保它在状态机声明之后。 - Paul Sturgess

5
如果您将状态字段命名为不同的名称,例如 publish_status。
Article.state_machines[:publish_status].states.map &:name

我想知道你是怎么知道的?是在文件中找到的吗?因为我在那里找不到。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接