2017-10-25 2 views
0

Im Folgenden sind die in meinem Modell definierten Zustände aufgeführt: booking.Überprüfen, ob ein bestimmter Status nicht funktioniert, wenn mehrere Zustände pro Modell verwendet werden (AASM)

erster Zustand

aasm :booking_state,namespace: :booking_state, skip_validation_on_save: true, :whiny_transitions => false do 
    state :pending, initial: true 
    state :some_other_states 
end 

2. Staat

aasm :payment_state,namespace: :payment_state, skip_validation_on_save: true, :whiny_transitions => false do 
    state :pending, initial: true 
    state :some_other_states 
end 

Nun, wenn ich booking.aasm(:booking_state).current_state tun gibt es die richtigen state Namen.

Aber wenn ich booking.aasm(:booking_state).pending? tun, wird unter error statt booleschen Wert zurückgegeben.

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

Was könnte das Problem hier sein? Ich weiß, wenn ich nur onestate pro Modell dies funktioniert. Aber funktioniert nicht, wenn multiple states pro Modell verwendet wird.

+0

Aufruf, der einen 'state' zurückgibt, verwendet' booking_state' Variable, während letzterer ein Symbol ': booking_state' verwendet. Ist es ein Tippfehler? – mudasobwa

+0

@mudasobwa ja, es ist ein Tippfehler. Das tut mir leid. – Abhilash

+1

Master-Zweig von 'aasm' deklariert Methoden wie [' "# {namespace} _ # {state}?" '] (Https://github.com/aasm/aasm/blob/master/lib/aasm/base.rb # L101-L104), wenn der Namespace angegeben ist. Das heißt, "booking.booking_state_pending?" Sollte funktionieren. – mudasobwa

Antwort

2

Master-Zweig von AASM deklariert Methoden wie "#{namespace}_#{state}?", wenn der Namespace angegeben ist.

Das sagte, booking.booking_state_pending? würde funktionieren.

+0

eine Idee, wie man alle Datensätze mit "ausstehendem Zustand" holt? wie 'booking.pending' – Abhilash

+0

https://github.com/aasm/aasm#automatic-scopes ::' Booking.booking_state_pending'? – mudasobwa

+0

'boolean' Antwort funktioniert' booking.booking_state_pending? '. Aber wenn nur 'Booking.booking_state_pending' aufgerufen wird, wird kein Methodenfehler ausgelöst.' NoMethodError: undefinierte Methode 'payment_state_pending for # ' – Abhilash

Verwandte Themen