2014-10-10 8 views
5

Ich benutze AASM. Ist es möglich, zwei verschiedene Zustände in Abhängigkeit von Bedingungen Zum Beispiel:AASM: Übergänge in 2 verschiedene Zustände, abhängig von den Bedingungen

aasm_event :completes do 
    transitions :to => condition? ? :complete : :terminate, 
       :from => [:active] 
end 

der Zweck ist, weil ich Legacy-Code bin mit und es gibt eine Menge von „vervollständigt“ Anrufe und beendet Status neu.

Ich versuche bereits Überschreibung in einer neuen Datei, um die Zustandsmaschine als

aasm_event :completes do 
    transitions :to => :terminate, 
       :from => [:active] 
end 

aber es hat nicht funktioniert, es geht nach wie vor Zustand zu beenden

Antwort

8

Verwenden Sie ein guard:

aasm_event :completes do 
    transitions :from => [:active], :to => :complete, :guard => condition? 
    transitions :from => [:active], :to => :terminate 
end 

def condition? 
    some_contition 
end 

Dies wird zu :complete übergehen, wenn condition? wahr ist, andernfalls wird es zu :terminate übergehen.

+0

nette arbeit perfekt tnx – zetacu