2017-10-25 1 views
0

다음은 내 booking 모델에 정의 된 상태입니다.모델 당 여러 상태 (아아)를 사용할 때 특정 상태가 작동하지 않음을 확인하십시오.

1 상태 내가 booking.aasm(:booking_state).current_state을 할 경우

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 주

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 이름을 반환합니다.

하지만 내가 수행 할 경우 부울 값 대신 error 이하를 반환합니다.

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

여기에 어떤 문제가있을 수 있습니까? 내가 사용하는 경우에만 알고 모델 onestate이 작동합니다. 그러나 모델 당 multiple states을 사용할 때는 작동하지 않습니다.

+0

'state'는'booking_state' 변수를 사용하고, 후자는': booking_state' 심볼을 사용합니다. 오타입니까? – mudasobwa

+0

@mudasobwa 네, 오타입니다. 그 죄송합니다. – Abhilash

+1

'aasm'의 마스터 브랜치는 [# "{네임 스페이스} _ # {상태}"와 같은 메소드를 선언합니까? "] (https://github.com/aasm/aasm/blob/master/lib/aasm/base.rb # L101-L104). 즉, 'booking.booking_state_pending?'이 효과가 있습니다. – mudasobwa

답변

2

네임 스페이스가 지정된 경우 aasm의 마스터 브랜치는 "#{namespace}_#{state}?"과 같은 메소드를 선언합니다.

즉, booking.booking_state_pending?이 작동합니다.

+0

'펜딩 상태'로 모든 레코드를 가져 오는 방법에 대한 아이디어는 없습니까? 'booking.pending'처럼 – Abhilash

+0

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

+0

'boolean' 응답은'booking.booking_state_pending? '작동하지 않습니다. 하지만 그냥'Booking.booking_state_pending'을 호출하면 메서드 오류가 발생하지 않습니다 .'NoMethodError : 정의되지 않은 메서드'' – Abhilash

관련 문제