一个模型中有多个状态机?

时间:2010-02-24 00:57:18

标签: ruby-on-rails aasm

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

aasm可以处理吗?还有其他想法或设计考虑因素吗?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

因为当你在一个模型中使用多个状态机时会出现这个问题,所以得到一个答案会很好,尽管已经有了答案。 请尝试:

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

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

答案 2 :(得分:-2)

如果你需要在一个模型中使用多个状态机,它可能会变得很大,是时候拆分模型了。 所以在你的例子中,你应该添加模型用于背景调查,访谈,信息收集......