2017-02-04 4 views
0

state에서 다른 하나로 이동하기 위해 AFS state machine을 사용하려고합니다. 그러나 issuestatemachine이 호출하지 않고 모두 states을 통해 이동한다는 것입니다. 내가 Booking.create 할 경우 다음 코드는 여기에statemachine 상태는 항상 초기 상태 대신 마지막 상태를 반환합니다.

include AASM 

    aasm column: 'state' do 
    state :pending, initial: true 
    state :checked_in 
    state :checked_out 
    event :check_in do 
     transitions from: :pending, to: :checked_in, guard: :verify_payment? 
    end 
    event :check_out do 
     transitions from: :checked_in, to: :checked_out 
    end 
    end 

    def verify_payment? 
    self.payment_status=="SUCCESS" 
    end 

을 사용하고있다조차 처음 대신 예상 pending

checked_out 상태로 반환 왜 그 대신 initiallast 예상되는 상태를 반환?

답변

0

check_incheck_out이라는 두 개의 database fields이 있다는 것이 문제가되었습니다. 그래서 activerecord는 속성 방법으로 고려하고 여기에 수정이 데이터베이스에보다 다른 무언가에 event 이름을 변경하는 것입니다 creation.So에 해당 이벤트를 발생합니다

include AASM 

     aasm column: 'state' do 
     state :pending, initial: true 
     state :checked_in 
     state :checked_out 
     event :move_to_check_in do 
      transitions from: :pending, to: :checked_in, guard: :verify_payment? 
     end 
     event :move_to_check_out do 
      transitions from: :checked_in, to: :checked_out 
     end 
     end 

     def verify_payment? 
     self.payment_status=="SUCCESS" 
     end