2017-02-04 119 views
0

我試圖使用aasm state machine從一個state轉到另一個狀態。但issuestatemachine正在移動通過所有states沒有調用。這裏是代碼我使用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 

這裏如果我做Booking.createchecked_out狀態恢復甚至最初的而不是預期的pending

爲什麼它返回last預期的狀態,而不是initial

回答

0

問題原來是我有兩個database fieldscheck_incheck_out。所以activerecord將它視爲屬性的方法和開槍creation.So這些事件在這裏的解決方法是在數據庫中event名稱更改爲比不同的東西

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 
相關問題