代码之家  ›  专栏  ›  技术社区  ›  DGM

一个模型中的多状态机?

  •  7
  • DGM  · 技术社区  · 14 年前

    我有一个代表注册过程的模型,它需要跟踪几个过程的进展(背景检查、面试、信息收集…)。每个注册都可以由状态机表示,然后注册的整体状态可能取决于其他注册的状态。

    aasm能处理这个吗?有其他想法或设计考虑吗?

    3 回复  |  直到 8 年前
        1
  •  -2
  •   Petrik de Heus    14 年前

    如果在一个模型中需要多个状态机,那么它可能会变得越来越大,是时候拆分模型了。 所以在您的示例中,您应该添加用于背景检查、面谈、信息收集的模型…

        2
  •  4
  •   Josh Delsman    14 年前

    尝试此插件,您甚至可以使用它从其他状态机继承:

    http://api.pluginaweek.org/state_machine/

        3
  •  4
  •   Darshan    8 年前

    当你在一个模型中搜索多个状态机时,这个问题就出现了,所以最好有一个答案,尽管已经有了答案。 请尝试执行以下操作:

    class Example < ActiveRecord::Base
     include AASM
    
        aasm :search, :column => :search do
        state :initialised, :initial => true
        ...
        end  
        aasm :sync, :column => :sync do
        state :unsynced, :initial => true
        ...
        end 
    end
    

    这将基于两列(搜索和同步)创建两个状态机。