以下は、booking
モデルで定義されている状態です。私はbooking.aasm(:booking_state).current_state
をすればモデルごとに複数の状態(aasm)を使用しているときに特定の状態が動作していないかどうかの確認
第一状態
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
は、今では、適切なstate
名前を返します。
しかし、私がbooking.aasm(:booking_state).pending?
を実行すると、ブール値の代わりにerror
以下を返します。
`NoMethodError: undefined method `pending?' for #<AASM::InstanceBase:0x005611e58e4cf0>`
ここでは何が問題になりますか?モデルごとにone
state
を使用するかどうかは分かります。モデルごとにmultiple states
を使用すると動作しません。
'state'は' booking_state'変数を使用し、後者は ':booking_state'シンボルを使用します。それはタイプミスですか? – mudasobwa
@mudasobwaはいそれはタイプミスです。そのために残念。 – Abhilash
'aasm'のマスターブランチは、' '" {{"}#{name} _#{state}?"](https://github.com/aasm/aasm/blob/master/lib/aasm/base.rb)のようなメソッドを宣言します。 #L101-L104)。つまり、 'booking.booking_state_pending? 'はうまくいくはずです。 – mudasobwa