두 테이블 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
안녕하세요! 나는 당신이 '가치 1과 가치 2 모두의 가치에 기초해서 분류 될 수 있어야한다'라는 말을 얻지 못한다. 연관된 B에 두 값이 모두있는 A 레코드 만 표시한다는 의미였습니까? 또는 B 값을 기반으로 A 레코드를 주문 하시겠습니까? – jvnill
질문을 업데이트했습니다. 그것이 명확하게되는지보십시오. – sumitshining
SQL 쿼리에서 레일스에 선언 된 메서드를 사용할 수 없습니다. 당신이 구현할 수있는 가장 가까운 것은 cheeseweasel이 아래에 답한 것입니다. – jvnill