statemachine状态总是返回最后一个状态而不是最初的状态

问题描述:

我试图使用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

问题原来是我有两个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