문제

RAINS 프로젝트의 RANSACK의 SORT_LINK를 사용하여 지불 모델에 대한 수수료 목록을 표시합니다.그러나 'fee_amount'는 지불 모델의 속성이 아니라 bill 모델의 클래스 메소드 (지불에 속한다)가 아닙니다.내가 현재 가진 것 :

<%= sort_link @search, : bill_fee_amount, "편의비"%>

현재 지불 bill 에 액세스하여 일부 계산 및 반환을 수행하는 bill 에 대한 'fee_amount'방법을 호출해야합니다.부유물.그것은 내가 찾고 싶어하는 수레입니다.

이 작업을 수행 할 수 있습니까? 아니면 내가 다루는 모델의 속성 만 정렬 할 수 있습니까?

도움이 되었습니까?

해결책

RANSACK은 Metasearch의 후속자이며 Metasearch 설명서에 따르면 사용자 정의 검색을 만들 수 있습니다.링크가 있습니다 :

https://github.com/ernie/meta_search

이렇게 생각할 것 같습니다.

scope :sort_by_bill_fee_amount_asc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount ASC')
scope :sort_by_bill_fee_amount_desc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount DESC')
.

계산이 정확히 무엇인지 분명하지 않았으므로 fee_amount라는 필드의 합계 일뿐입니다.불행히도, 그것은 아마도 그보다 훨씬 더 나쁩니다. 불쾌한 SQL 계산이 Payment 모델에 포함되어야한다고 생각합니다.

SQL이 SQL이 정렬 할 열을 포함시켜야 할 열에 대해 SQL을 계산하고 RANSACK이 검색하기를 원하는 이름을 포함시켜야한다는 것입니다.

나는 도움이되기를 바랍니다.

다른 팁

Ransack을 사용할 수는 없지만 이슈 를 확인하십시오.어떤 사람들 이이 기능에 대한 패치를 만들었지 만, 나는 그들을 시도하지 않았습니다.

Ransack 내부적으로 데이터베이스에 정의 된 모델을 항상 사용하고 있으며범위가 만든 임시 테이블을 사용하십시오.

PD : 항상이 질문으로 돌아 오는 것처럼 답변으로 의견을 다시 작성했습니다 : p

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top