2016-08-19 16 views
1

考慮到state_machine寶石,如何選擇在給定狀態之前出現的一組狀態名稱/符號?如何使用Ruby`state_machine` gem得到一個給定狀態之前的狀態列表?

可以說我有四種狀態::pending,:signature_needed:ordered,:finalized。假設從最初(:pending)到最終(:finalized)狀態的線性進程。

我如何獲得:ordered之前的所有狀態?我期待像[:pending, :signature_needed]這樣的結果。

注:我試圖找出爲什麼沒有提供這個功能後,我才意識到,state_machinenot currently supported(因爲我打算做一個PR來增加這個功能)。

+0

你能發佈你的代碼來設置狀態機嗎?這會讓我們更容易找出代碼來推導出給定狀態之前的狀態。 – kcdragon

+2

這真的可能嗎?我對寶石本身並不熟悉,但是如果有多個狀態路徑會發生什麼?期望的行爲是什麼? –

+0

我與@SebastianLenartowicz - 我很好奇,如果這甚至可能沒有明確定義什麼狀態來''之前'... – CDub

回答

0

沒有這樣的功能內置到(目前未維護的)state_machine寶石中。由於它完全可能用於非線性狀態轉換,所以準確描述「哪個狀態在另一個狀態之前」可能是非常複雜且相當不可預測的。因此,每個使用gem的應用程序都需要創建自己的mixin來動態確定週期中的哪些狀態出現在彼此之前和之後。

積分回答請參閱操作指南下方的註釋。

相關問題