每个模型使用多个状态时检查特定状态不起作用(aasm)

时间:2017-10-25 08:23:03

标签: ruby-on-rails ruby state-machine 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,则会返回正确的state名称。

但如果我booking.aasm(:booking_state).pending?,则返回error以下而不是布尔值。

`NoMethodError: undefined method `pending?' for #<AASM::InstanceBase:0x005611e58e4cf0>`  

这可能是什么问题?我知道如果每个模型我只使用one state这是有效的。但是每个模型使用multiple states时无效。

1 个答案:

答案 0 :(得分:2)

当指定名称空间时,aasm的主分支声明"#{namespace}_#{state}?"之类的方法。

那就是说,booking.booking_state_pending?会起作用。