2010-11-09 10 views
41

Estamos utilizando state_machine (https://github.com/pluginaweek/state_machine) en un proyecto y nos gustaría ofrecer un formulario con un seleccionar que nos permite elegir un estado. (Esto es para buscar, no para establecer). Parece que no puedo encontrar una manera de enumerar todos los estados posibles? Seguramente debería haber una manera automática de hacerlo, sin tener que codificar una lista de texto en algún lugar. Gracias!obtener lista de estados state_machine

Respuesta

66

Algo así como:

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

Gracias! Eso hace el truco. – phil

64

sólo para añadir a esto (porque estoy en constante búsqueda de esta respuesta, y siempre vuelvo a esta página), si está tratando de hacer una lista de los estados para una dando máquina de estados, intente esto:

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

Gracias, esto es mucho mejor. La respuesta aceptada solo maneja los valores predeterminados, supongo, y necesitaba los estados para mi campo personalizado "estado". ¡Gracias de nuevo! –

+0

Asegúrate de que esta línea aparezca después de las declaraciones de máquina de estado si la usas en tu clase. –

5

Si el nombre de su campo de estado de forma diferente, como publish_status

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