2010-11-09 16 views
41

Stiamo utilizzando la modalità state_machine (https://github.com/pluginaweek/state_machine) in un progetto e vorremmo offrire un modulo con una selezione che ci consenta di scegliere uno stato. (questo è per la ricerca, non per l'impostazione). Non riesco a trovare un modo per elencare tutti gli stati possibili? Sicuramente dovrebbe esserci un modo automatico per farlo, non dover codificare un elenco di testo da qualche parte. Grazie!ottieni l'elenco degli stati state_machine

risposta

66

Qualcosa di simile:

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

Grazie! Questo fa il trucco. – phil

64

solo aggiungere a questo (perché sono costantemente alla ricerca di questa risposta, e ho sempre tornare a questa pagina), se si sta cercando di elencare gli stati per un dando macchina statale, provate questo:

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

Grazie, questo è molto meglio. La risposta accettata gestisce solo i valori predefiniti, credo, e avevo bisogno degli stati per il mio "stato" di campo personalizzato. Grazie ancora! –

+0

Assicurati che questa linea arrivi dopo le dichiarazioni della macchina di stato se la usi nella tua classe. –

5

Se il nome del tuo campo di stato in modo diverso, come ad esempio publish_status

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