2014-10-10 10 views
5

Używam AASM. Czy to możliwe 2 różne stany w zależności od warunków Na przykład:AASM: Przejście do 2 różnych stanów w zależności od warunków

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

Celem tego jest, ponieważ używam starszych kod i istnieje wiele połączeń „dopełnia” i zakończyć stan jest nowy.

już próbować nadpisanie w nowym pliku machiny państwowej jako

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

ale to nie działa, to wciąż idzie stanie kompletnym

Odpowiedz

8

użyć guard:

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

def condition? 
    some_contition 
end 

To przejdzie na :complete, jeśli condition? jest prawdziwe, w przeciwnym razie przejdzie na :terminate.

+0

fajna praca idealnie tnx – zetacu

Powiązane problemy