2014-10-10 1 views
5

Я использую AASM. Возможно ли это 2 разных состояния в зависимости от условий, например:AASM: переход на 2 разных состояния в зависимости от условий

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

целью этого, потому что я использую унаследованный код, и есть много «завершает» вызовов и завершать состояние нового.

Я уже попробовать переопределить в новом файле государственной машины, как

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

, но он не работает, он все еще идет в состояние полного

ответ

8

Используйте guard:

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

def condition? 
    some_contition 
end 

Это будет переход на :complete, если condition? действительно, в противном случае он перейдет на :terminate.

+0

хорошая работа отлично tnx – zetacu

 Смежные вопросы

  • Нет связанных вопросов^_^