2

나는 사용자가 State Machine gem를 사용하여 워크 플로우를 관리 할 수 ​​있습니다 응용 프로그램을 작성하려고에 사용자 정의 데이터를 기반으로 상태 머신의 동적 정의를 생성 할 수 있지만 사용자가 정의 할 수 있도록 진행하는 방법을 잘 모르겠습니다 자신의 루비 용 State Machine 젬을 사용하는 자신의 상태 머신.는 어떻게 DB

보석 문서의 dynamic definitions 부분에는 아래 코드를 데이터 소스로 대체하여이 작업을 수행 할 수 있다고 나와 있습니다.

def transitions 
    [ 
     {:parked => :idling, :on => :ignite}, 
     {:idling => :first_gear, :first_gear => :second_gear, :on => :shift_up} 
     # ... 
    ] 
    end 

나는이 작업을 수행하는 방법을 잘 모릅니다. 데이터베이스에서 Transistion을 정의하는 방법은 무엇입니까?

답변

6

transitions은 단지 방법 일 뿐이므로 원하는대로 구현할 수 있습니다. 가능한 한 가지 방법이 있습니다.

ActiveRecord를 사용하고 있다고 가정합니다.

은에서에와 전환 모델 및 관련 전환 테이블을 정의하고 열의에, 모든 문자열. 그런 다음 당신은 당신의 전환 방법에 그런 : 예컨대, 전환을 정의

Transition.create(:from => "parked", :to => "idling", :on => "ignite") 

를 시작할 수 있습니다

def transitions 
    transitions_data = [] 
    Transition.all.each do |transition| 
    transitions_data << { transition.from.to_sym => transition.to.to_sym, :on => transition.on.to_sym } 
    end 
    transitions_data 
end 

그런 다음 동적 상태 머신을 만들 링크 된 문서의 다른 코드를 사용할 수 있습니다.

이것은 단지 하나의 예이며, 훨씬 더 최적화 될 수 있습니다. 나는 그 부분을 너에게 맡길 것이다. 바라기를 이것은 당신에게 좋은 출발을 줄 것입니다.