2013-03-12 2 views
0

두 테이블 A와 B가 있습니다. A와 B에는 외래 키가 있습니다. 둘 다 ActiveRecord.레일 두 열에서 오는 값에 대한 정렬

class A 
    has_one :b 
    def valueRendered 
    b.value1 || b.value2 
    end 
end 

class B 
    (belongs_to :a, :foreign_key => :keyb) if self.b 
end 

여기에서 valueRendered 메소드의 값은 value1이 null 인 경우 B의 필드 값 2에서 가져온 값입니다. valueRendered를 사용하여 표를 정렬해야합니다. 즉, 표는 value1과 value2의 값에 따라 정렬되어야합니다. 진행 방법?

편집 : 는, 구체적으로는 필드 "VALUE1"의 값을 갖지만 VALUE1은 널 (null)이면, 값 "값 2"에서 유래 한 계산 된 열 (레일 방법)이 존재한다고 가정하기. 이 계산 된 필드 (메서드)와 관련하여 전체 테이블 (레코드 또는 범위의 특정 아니요에 국한되지 않음)을 정렬하려고합니다. 계속 진행하는 방법이 혼란 스럽습니다.

좀 더 편집 : 실제 샘플 코드 컨트롤러에서

,

sort_fields = ['offer_orders.id','offers.name','offer_orders.created_at', 
    'offer_orders.country', 'offer_orders.ip_address',  
    'fraud_score_daily.adjusted_fraud_probability, fraud_score_daily.fraud_probability',      
    'players.email','players.account_status', 
    nil, 
    nil, 
    nil, 
    nil 
    ] 

    arel = OfferOrder.includes(:offer, :player, :fraud_score_daily).group('fraud_score_daily.offer_order_id').order('dt desc') 
    arel = paginate_table_data(arel, :sort_fields => sort_fields) 

paginate_table_data 방법은 도우미에

def paginate_table_data(arel, opts={}) 
    opts.assert_keys(:required => [:sort_fields]) 
    @page_size = page_size 
    @current_page = current_page 
    arel.paginate(:page => @current_page, :per_page => params[:iDisplayLength]). 
    order(order_by(opts[:sort_fields]).join(', ')) 
end 
+0

안녕하세요! 나는 당신이 '가치 1과 가치 2 모두의 가치에 기초해서 분류 될 수 있어야한다'라는 말을 얻지 못한다. 연관된 B에 두 값이 모두있는 A 레코드 만 표시한다는 의미였습니까? 또는 B 값을 기반으로 A 레코드를 주문 하시겠습니까? – jvnill

+0

질문을 업데이트했습니다. 그것이 명확하게되는지보십시오. – sumitshining

+0

SQL 쿼리에서 레일스에 선언 된 메서드를 사용할 수 없습니다. 당신이 구현할 수있는 가장 가까운 것은 cheeseweasel이 아래에 답한 것입니다. – jvnill

답변

1

어떻게 같은 약 :

scope :order_by_value_rendered, joins(:b).order("value1, value2") 
+0

오름차순 또는 내림차순으로 선택되어 있으므로 순서가 도움이되지 않습니다. 나는 이미 그것을 시도했다. – sumitshining

+0

죄송합니다, 영어는 제 1 언어가 아닙니다. '오름차순 또는 내림차순 선택형'이란 무엇을 의미합니까? – jvnill

+0

선택이란 내가 주문을 오름차순으로 또는 내림차순을 런타임에 선택해야 함을 의미합니다. – sumitshining

관련 문제