2011-07-06 48 views
1

在狀態機中爲rails插件acts_as_state_machine添加一個循環是否存在任何問題?作爲狀態機循環使用

我試圖做這樣的事,而不是工作:

state :not_sent 
state :sent 

event :test do 
transitions :from => :not_sent, :to => :sent 
transitions :from => :sent, :to => :sent 
end 

我想這樣做是因爲狀態機是針對電子郵件的狀態。還有更多的國家說我在這裏展示的那些,但是出於實用的原因,我只是展示了關於循環的部分。

所以,現在我想補充重新發送消息的可能性。所以我想添加一個循環到狀態機,但它不起作用。我嘗試添加新的狀態「重新發送」,僅用於調試目的,它工作。但我需要一些方法來在狀態機中創建一個循環。

回答

2

你實際上並沒有循環任何東西,儘管它可能看起來像這樣。如果你的開始狀態和結束狀態是相同的,那麼你不會進行轉換,並且aasm會跳過它,IIRC。想要做這種事情的正常原因是重複一些過渡的邏輯;在這種情況下,我會用一個方法調用替換過渡,或者添加一箇中間狀態,如:重新發送,然後在重做您之後的工作後立即轉換回發送狀態。