2012-10-10 65 views
1

我是AASM的新手,嘗試獲取MyModel模型中可以轉換爲state:newstate的所有狀態的列表。rails aasm:獲取允許特定事件的所有狀態

因此,舉例來說:

aasm_event :finish do 
    transitions :to => :finalstate, :from => [:start, :working] 
    end 

基本上,我想要回[:開始,:工作]通過模型陣列所,所以什麼沿

MyModel.aasm_events.finish.transitions.from 

但線,那麼,這不是語法......我在文檔中找不到任何內容。

任何建議表示讚賞。

回答

2

直到現在還沒有被支持。剛剛發佈的寶石版本3.0.12現在支持一種名爲的類方法,它的確如你所要求的那樣,aasm_from_states_for_state。不幸的是,你建議的小DSL(... finish.transitions.from)非常好,但現在不可用。但我會記住它;)

使用新的類方法是這樣的:

MyModel.aasm_from_states_for_state(:finalstate) 

返回所有可能的狀態。如果你只是從一個特定的過渡態要:

MyModel.aasm_from_states_for_state(:finalstate, :transition => :finish) 

或更現代的(使用Ruby 1.9)

MyModel.aasm_from_states_for_state(:finalstate, transition: :finish) 

所有調用返回的可能來自各國的數組。

+1

只是一個提示:源代碼表示,該方法'aasm_from_states_for_state'將在4.x版本被刪除 - >」 .aasm_from_states_for_state已被棄用,將在4.0.0版本中去除;請使用.aasm.from_states_for_state代替!」 – awenkhh

相關問題