2016-08-19 65 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来动态确定周期中的哪些状态出现在彼此之前和之后。

积分回答请参阅操作指南下方的注释。

相关问题