2014-10-10 26 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 

如果condition?爲真,則將轉換爲:complete,否則將轉換爲:terminate

+0

完美工作完美tnx – zetacu 2014-10-10 01:28:23

相關問題