2014-07-17 2 views
1

AASM 젬을 사용하여 특정 오브젝트를 다른 상태로 전환하는 레일즈 앱에서 작업하고 있습니다.레일스 AASM 자동 상태 천이

"승인"의 초기 상태는 "허용"속성이 false로 설정된 경우에만 필요합니다. AASM gem을 사용하여 자동 전환을 수행 할 수 있습니까? 호출하는 순서와 함께, 당신은 모든 가능한 콜백의 목록을 볼 수 있습니다

다음
aasm column: :status do 
    state :pre_approval, initial: true 
    state :pending 
    state :opened 
    state :closed 

    event :approved do 
     transitions from: :pre_approval, to: :pending, guard: :approved_changed? 
    end 

    event :received, after: Proc.new { set_received_date } do 
     transitions from: :pending, to: :opened 
    end 

    event :complete, after: Proc.new { set_completion_date } do 
     transitions from: :opened, to: :closed 
    end 
    end 
+0

'accept' 속성이'true'로 바뀔 때마다'status' 칼럼이'AASM'에 의해 자동으로'pending'으로 설정되기를 원합니다. – alto

답변

0

: 여기

은 상태입니다

begin 
    event   before 
    event   guards 
    transition  guards 
    old_state  before_exit 
    old_state  exit 
    transition  after 
    new_state  before_enter 
    new_state  enter 
    ...update state... 
    event   success    # if persist successful 
    old_state  after_exit 
    new_state  after_enter 
    event   after 
rescue 
    event   error 
end 

은 새로운 상태에 대한 세 가지 콜백 있습니다 : before_enter, enter, after_enter, 가드가 없어. 어떤 조건이 참일 때 초기 상태로 설정하려면 레일스 before_create 콜백을 사용하는 것이 가장 좋습니다.

나는 아아가 주를 경비원으로 추가해야한다고 생각하지 않습니다. 상태는 특정 상태이며 행동이 아닙니다. 우리는 단지 콜백을 입력하거나 종료 할 수 있습니다.

AASM gem을 사용하여 자동 전환을 수행하는 방법이 있습니까?

아니요,하지만 aasm 콜백 또는 rails 콜백에서 이벤트를 호출 할 수 있습니다.