2014-10-07 91 views
0

我使用的是紅寶石AASM寶石。如何使用AASM跳過狀態機中的狀態

有誰知道跳過狀態的正確方法是?

class Job 
    # ... 

    event :stage1_completed do 
    if stage2_completed? 
     transitions from: :stage1, :to => :stage3 
    else 
     transitions from: :stage1, :to => :stage2 
    end 
    end 

    # ... 
end 

在AASM中進行設置的最佳方法是什麼?

我在一組resque作業中使用此代碼,因此stage1是一個resque作業,然後更新狀態並開始下一個resque作業。階段2相同,然後階段3

回答

1

您可以使用guards

event :stage1_completed do 
    transitions from: :stage1, :to => :stage3, :guard => :stage2_completed? 
end 
+0

這將如何處理從stage1到stage2的正常轉換? – Daniel 2014-10-07 18:28:17

+0

在守護者之下添加轉換不起作用嗎? – rohit89 2014-10-07 18:54:19

+0

啊,我不知道他們會按順序工作,一旦狀態改變就完成了。涼! – Daniel 2014-10-07 19:24:50