如何使用 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_machine
是 not currently supported(因为我打算制作一个添加此功能的 PR)。
state_machine
gem(当前未维护)中没有内置此类功能。由于非线性状态转换是完全可能的,因此准确描述 "which state comes before another state." 可能极其复杂且非常不可预测,因此,每个使用 state_machine
gem 的应用程序都需要创建自己的 mixin 以动态确定循环中的哪些状态在彼此之前和之后。
答案归功于 OP 下面的评论。
考虑到 state_machine gem,一个 select 如何在给定状态之前出现一组状态 names/symbols?
假设我有四种状态::pending
、:signature_needed
、:ordered
、:finalized
。假设从初始 (:pending
) 到最终 (:finalized
) 状态呈线性进展。
如何获取 :ordered
之前的所有状态?我希望得到像 [:pending, :signature_needed]
这样的结果。
注意:我刚刚意识到,在试图找出为什么没有提供此功能之后,state_machine
是 not currently supported(因为我打算制作一个添加此功能的 PR)。
state_machine
gem(当前未维护)中没有内置此类功能。由于非线性状态转换是完全可能的,因此准确描述 "which state comes before another state." 可能极其复杂且非常不可预测,因此,每个使用 state_machine
gem 的应用程序都需要创建自己的 mixin 以动态确定循环中的哪些状态在彼此之前和之后。
答案归功于 OP 下面的评论。