2014-02-18 2 views
3

동적 선택 양식을 ActiveAdmin으로 만들고 싶습니다. 사용자에게 여러 개의 주문이 있다고 가정 해 보겠습니다. 그리고 각 Order는 속성 pay (boolean)를가집니다. 사용자를 선택한 후 다음 선택은이 사용자가 지불 한 주문입니다.option_groups_from_collection_for_select 특정 방법 그룹

option_groups_from_collection_for_select(User.order(:email), :orders, :email, :id, :name) 

하지만 유료 주문 만 표시하는 방법은 없습니다.

답변

3

전달할 :orders 인수를 대체 할 User 모델에서 메소드를 정의 할 수 있습니다.이 메소드는 지불 된 orders을 리턴해야합니다.

(이 당신을 위해 방법을 추가합니다) 연관 선언을 사용해보십시오 :
class User < ActiveRecord::Base 
    has_many :orders 
    has_many :paid_orders, class_name: 'Order', -> { where pay: true } 
end 

는 이제 user 인스턴스가 pay 속성이 true입니다 orders를 반환하는 paid_orders 방법이있을 것이다. 그것을해야

option_groups_from_collection_for_select(User.order(:email), :paid_orders, :email, :id, :name) 

:

지금에 양식 도우미를 변경합니다.

여기서 생각하는 것은 :paid_orders 인수는 User 인스턴스의 메서드 이름입니다. 원하는 방법을 자유롭게 정의 할 수도 있습니다. 수동으로도 다음과 같이 정의 할 수 있습니다.

class User < ActiveRecord::Base 
    has_many :orders 

    def paid_orders 
    orders.where pay: true 
    end 
end 
+0

Ty 많이 있습니다. 그것은 작동합니다. – GeorgesLeYeti

관련 문제