2017-02-04 4 views
0

Я пытаюсь использовать aasm state machine для перехода от одного state к другому. Но issue заключается в том, что statemachine перемещается по всем 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.create возвращается с checked_out состояния даже первоначально вместо ожидаемого pending

Почему его возвращение last ожидаемого состояния вместо initial ??

ответ

0

Вопрос оказался тем, что у меня есть два database fields под названием check_in и check_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 
Смежные вопросы