2010-02-24 19 views
6

Tengo un modelo que representa un proceso de registro, que necesita seguir la progresión de varios procesos (verificaciones de antecedentes, entrevistas, recopilación de información ...). Cada uno puede ser representado por una máquina de estado, y luego el estado general del registro puede depender del estado de los demás.Múltiples máquinas de estado en un modelo?

¿Puede manejar esto? ¿Alguna otra idea o consideraciones de diseño?

Respuesta

-2

Si necesita múltiples statemachines en un modelo que probablemente llegar a grande y es hora de dividir el modelo. Por lo tanto, en su ejemplo, debe agregar modelos para verificaciones de antecedentes, entrevistas, recopilación de información ...

+0

hay varios modelos para todas estas cosas, y es el proceso general lo que necesita el modelo de estado – DGM

+2

una necesidad de múltiples statemachines no necesariamente representa una necesidad de descomposición en absoluto. De hecho, puede ser el resultado de una buena descomposición que ya se haya aplicado. Por ejemplo, en el caso de uso del OP. Está bien si el modelo al final de un has-many tiene su propia máquina de estado, pero igual necesitará una máquina de estado en el padre para el estado de la colección, a menos que pretenda usar solo una gran cantidad de difícil de auditar las transiciones condicionales. –

4

Dado que esta pregunta surge cuando busca en Google varias máquinas de estado en un modelo, sería bueno tener una respuesta, aunque hay ya es una respuesta. Por favor trate de hacer :

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 

Esto creará dos máquinas de estado en base a dos columnas, la búsqueda y sincronización.

Cuestiones relacionadas