2010-02-24 4 views
6

나는 여러 프로세스 (백그라운드 검사, 인터뷰, 정보 수집 ...)의 진행 과정을 추적해야하는 등록 프로세스를 나타내는 모델을 가지고 있습니다. 각각은 상태 머신으로 표현 될 수 있으며, 등록의 전반적인 상태는 다른 상태의 상태에 따라 달라질 수 있습니다.하나의 모델에 여러 상태 시스템이 있습니까?

aasm이 (가)이 문제를 처리 할 수 ​​있습니까? 다른 아이디어 또는 디자인 고려 사항? 당신이 아마 큰에 점점 하나 개의 모델에 여러 statemachines 필요한 경우

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

답변

-2

과 모델을 분할하는 시간 :

+0

이 모든 것들에 대한 여러 모델이 있으며, 그것은 상태 모델링을 필요로하는 전체 프로세스입니다. – DGM

+2

여러 statemachines에 대한 필요성은 반드시 분해의 필요성을 나타내지 않습니다. 실제로 이미 적용된 좋은 분해로 인해 발생할 수 있습니다. 예를 들면 OP의 유스 케이스에서. has-many의 끝 부분에있는 모델이 자신의 state-machine을 가지고 있다면 괜찮지 만, 당신이 많이 사용하지 않는 한, 컬렉션의 상태를 위해서 부모에게는 여전히 state-machine이 필요할 것이다. 조건부 전환을 감사하기 어렵습니다. –

4

은 당신도 다른 상태 머신에서 상속하는 데 사용할 수있는이 플러그인을 사용해보십시오. 예제에서 백그라운드 확인, 인터뷰, 정보 수집을위한 모델을 추가해야합니다 ...

4

하나의 모델에서 여러 상태 시스템을 Google로 검색하면이 질문이 나오므로 답변을 얻는 것이 좋습니다. 이미 대답입니다. 일을 시도하십시오 :

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 

이 두 개의 열을 기반으로이 상태 머신을 생성합니다, 검색 및 동기화.

관련 문제