2015-03-25 92 views
0

我有一個state_machine,它有三種可能的狀態state1,state2,state3。每當狀態機進入某個狀態時觸發一個事件

每當一個對象進入state_3我想觸發一個事件event1。

在我state_machine

,我有

 after_transition :on => :state_3, :do => :event1. 

但發生的事情是,每當從狀態1的狀態變爲狀態3或狀態2到狀態3,正確地觸發事件。但是當狀態轉換從狀態3轉換到狀態3時,事件1不會被觸發。我怎樣才能做到這一點?

我知道state3到state3不是state_transition。我可以使用像after_save回調之類的東西,並檢查狀態是state3。但是我想知道有沒有一種有效的方法可以實現這個目標是在state_machine中?

我想在state3上觸發事件到state3的原因是因爲我有一個表單。表格到達state3只有所有的問題都回答了。在回答所有問題後,我正在計算該商標。如果用戶只是改變了答案呢?狀態只會從狀態3更新到狀態3。這是我想要觸發事件從狀態3到狀態3的情況。

+1

當然state3到state3不是一個轉換,因爲狀態沒有改變。 – ReggieB 2015-03-25 09:37:29

+0

編輯我的問題。請通過 – Suganya 2015-03-25 09:39:28

+0

但爲什麼你想'state3'到'state3',如果有任何特定的原因,我們可以嘗試不同的方式 – Sontya 2015-03-25 09:49:16

回答

0

當用戶更改他們的答案時,他們會影響重新運行狀態2到3的轉換。因此,在應用更改之前將狀態更改爲狀態2。

或者,創建更新狀態並在應用更改之前將問題置於該狀態。

相關問題