Несколько конечных автоматов в одной модели? - PullRequest
7 голосов
/ 24 февраля 2010

У меня есть модель, которая представляет процесс регистрации, который должен отслеживать ход нескольких процессов (проверка данных, интервью, сбор информации ...).Каждый из них может быть представлен конечным автоматом, и тогда общее состояние регистрации может зависеть от состояния других.

Может ли Aasm справиться с этим?Любые другие идеи или соображения дизайна?

Ответы [ 3 ]

4 голосов
/ 12 сентября 2016

Поскольку этот вопрос возникает, когда вы гуглите несколько конечных автоматов в одной модели, было бы хорошо получить ответ, хотя ответ уже есть. Пожалуйста, попробуйте сделать:

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

Это создаст два конечных автомата на основе двух столбцов поиска и синхронизации.

4 голосов
/ 24 февраля 2010

Попробуйте этот плагин, который вы можете использовать даже для наследования от других конечных автоматов:

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

0 голосов
/ 07 сентября 2010

Если вам нужно несколько машин состояний в одной модели, вероятно, она становится большой и пришло время разделить модель. Так что в вашем примере вы должны добавить модели для проверки данных, интервью, сбора информации ...

...