J'ai intégré avec succès le gemme AASM le plus récent dans une application, en l'utilisant pour la création d'un sorcier. Dans mon cas, j'ai un ordre modèle
class Order < ActiveRecord::Base belongs_to :user has_one :billing_plan, :dependent => :destroy named_scope :with_user, ..... <snip> include AASM aasm_column :aasm_state aasm_initial_state :unauthenticated_user aasm_state :unauthenticated_user, :after_exit => [:set_state_completed] aasm_state : <snip> <and following the event definitions> end
5 Réponses :
Je ne comprends pas comment le flux de commande fonctionne avec la commande et les transitions, mais je supposais que vous venez d'inclure mieux que pour expliquer votre scénario mieux. P>
classname.aasme_states_for_for_for_select vous donne une liste d'états déclarés dans le modèle. P>
C'est obsolète maintenant. Utilisez classname.aasm.states_for_select code>.
Également, pas sûr à 100% de ce que vous demandez, mais si vous voulez que tous les états et événements déclarés pour votre modèle, vous pouvez obtenir ceux en appelant ordre.AMASM_STATES et commandez respectivement. P>
Une syntaxe de rubis plus élégante peut être utilisée, comme dans cet exemple en IRB ci-dessous. Vous obtenez tous les états admissibles dans un tableau de symboles. => [: créé,: Soumis,: rejeté ,: approuvé] p> p>
avec version 3.0.18 code>, vous pouvez utiliser
classname.aastes.Astates code> p> p>
classname.aasme.states.map (&: nom) code> vous permettra d'obtenir un tableau de symboles, ce qui peut être ce que vous voulez.
pour 3.1.1 Code> J'ai utilisé
modèle.aasm.events.keys code> pour obtenir un tableau de symboles de nom d'événement. Dans les versions récentes
.MAP (&: nom) code> ne le fera pas pour vous. P>