当每个模型使用多个状态时检查特定状态不起作用 (aasm)
checking for a specific state not working when using multiple states per model (aasm)
以下是我的 booking
模型中定义的状态。
第一状态
aasm :booking_state,namespace: :booking_state, skip_validation_on_save: true, :whiny_transitions => false do
state :pending, initial: true
state :some_other_states
end
第二状态
aasm :payment_state,namespace: :payment_state, skip_validation_on_save: true, :whiny_transitions => false do
state :pending, initial: true
state :some_other_states
end
现在,如果我 booking.aasm(:booking_state).current_state
它 returns 正确的 state
名称。
但是如果我booking.aasm(:booking_state).pending?
它returns低于error
而不是布尔值。
`NoMethodError: undefined method `pending?' for #<AASM::InstanceBase:0x005611e58e4cf0>`
这可能是什么问题?我知道如果我只对每个模型使用 one
state
这可行。但在每个模型使用 multiple states
时不起作用。
aasm 的 Master 分支在指定命名空间时声明类似 "#{namespace}_#{state}?"
的方法。
也就是说,booking.booking_state_pending?
可以。
以下是我的 booking
模型中定义的状态。
第一状态
aasm :booking_state,namespace: :booking_state, skip_validation_on_save: true, :whiny_transitions => false do
state :pending, initial: true
state :some_other_states
end
第二状态
aasm :payment_state,namespace: :payment_state, skip_validation_on_save: true, :whiny_transitions => false do
state :pending, initial: true
state :some_other_states
end
现在,如果我 booking.aasm(:booking_state).current_state
它 returns 正确的 state
名称。
但是如果我booking.aasm(:booking_state).pending?
它returns低于error
而不是布尔值。
`NoMethodError: undefined method `pending?' for #<AASM::InstanceBase:0x005611e58e4cf0>`
这可能是什么问题?我知道如果我只对每个模型使用 one
state
这可行。但在每个模型使用 multiple states
时不起作用。
aasm 的 Master 分支在指定命名空间时声明类似 "#{namespace}_#{state}?"
的方法。
也就是说,booking.booking_state_pending?
可以。