如何使用 Ruby `state_machine` gem 获取给定状态之前的状态列表?

How to get a list of states which come before a given state with Ruby `state_machine` gem?

考虑到 state_machine gem,一个 select 如何在给定状态之前出现一组状态 names/symbols?

假设我有四种状态::pending:signature_needed:ordered:finalized。假设从初始 (:pending) 到最终 (:finalized) 状态呈线性进展。

如何获取 :ordered 之前的所有状态?我希望得到像 [:pending, :signature_needed] 这样的结果。

注意:我刚刚意识到,在试图找出为什么没有提供此功能之后,state_machinenot currently supported(因为我打算制作一个添加此功能的 PR)。

state_machinegem(当前未维护)中没有内置此类功能。由于非线性状态转换是完全可能的,因此准确描述 "which state comes before another state." 可能极其复杂且非常不可预测,因此,每个使用 state_machine gem 的应用程序都需要创建自己的 mixin 以动态确定循环中的哪些状态在彼此之前和之后。

答案归功于 OP 下面的评论。