AASM

2010-06-07 3 views
5

최근 AASM gem을 응용 프로그램에 성공적으로 통합하여 마법사 작성에 사용하는 모델의 상태/이벤트 목록 가져 오기. 제 경우에는 모델 주문이 있습니다AASM

class Order < ActiveRecord::Base 

    belongs_to :user 
    has_one :billing_plan, :dependent => :destroy 
    named_scope :with_user, ..... <snip> 

    include AASM 

    aasm_column :aasm_state 
    aasm_initial_state :unauthenticated_user 

    aasm_state :unauthenticated_user, :after_exit => [:set_state_completed] 
    aasm_state : <snip> 

    <and following the event definitions> 

end 

이제 관리자에게 AASM 상태를 통해 자신의 그래프를 만들 수있는 기회를 제공하고 싶습니다. 따라서 OrderFlow 및 Transition이라는 두 개의 추가 모델을 만들었는데, 여기에서 order_flow에는 많은 전환이 있고 orders는 belongs_to order_flow 순서입니다.

지금까지 문제가 없습니다. 이제 관리자에게 기존의 전환/이벤트를 동적으로 order_flow 그래프에 추가 할 수있는 권한을 부여하고 싶습니다.

지금 문제는 내 주문 모델에서 모든 이벤트/전환 목록을 가져올 가능성이 없다는 것입니다. aasm_states_for_select가 올바른 후보로 보이지만 내 주문 모델에서 호출 할 수는 없습니다.

아무도 도와 줄 수 있습니까?

Thx. J.

답변

3

OrderFlow가 Order와 Transitions과 함께 작동하는 방식을 이해할 수 없지만 시나리오를 더 잘 설명 할 수 있다고 가정했습니다.

ClassName.aasm_states_for_select는 모델에서 선언 된 상태 목록을 제공합니다.

+7

지금은 사용되지 않습니다. 'ClassName.aasm.states_for_select'를 사용하십시오. –

1

또한 100 % 확신 할 수 없지만 모델에 대해 선언 된 모든 주 및 이벤트를 원한다면 Order.aasm_states 및 Order.aasm_events를 각각 호출하여 얻을 수 있습니다.

0

아래의 IRB에있는이 예제에서와 같이보다 우아한 Ruby 구문을 사용할 수 있습니다. 모든 허용 가능한 상태를 기호 배열로 얻습니다.

1.9.3-p0 :011 > ApprovalRequest.aasm_states.map(&:name) 

=> [: 작성 : 제출 : 승인이 : 거부] 버전 3.0.18

2

, 당신은 내가 얻을 Model.aasm.events.keys을 사용 3.1.1이벤트의 ClassName.aasm.states

+1

'ClassName.aasm.states.map (& : name)'은 원하는 기호 코드 배열을 가져옵니다. – rattray

0

를 사용해야 할 수 있습니다 이벤트 명 심볼의 배열 최근 버전에서는 .map(&:name)가 도움이되지 않습니다.

관련 문제