statemachine状态总是返回最后一个状态而不是最初的状态
问题描述:
我试图使用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
?
答
问题原来是我有两个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