if/then
의미 정렬 순서를 사용하여 정렬 할 수있는 방법이 있는지 궁금합니다. Sunspot의 데이터에 따라 조건부 order_by
내가 ADRESS에 노력하고 기본적인 요구 사항
은 이것이다 :- 내 기록
nil
될 수 contact_again_time 시간 속성을 가지고있다. - 목록은
contact_again_time
이있는 모든 레코드가 먼저contact_again_time
에 의해 오름차순 정렬되는 방식으로 정렬되어야합니다. - 나머지는
contact_again_time
이 nil 인 경우 created_at에 의해 오름차순으로 정렬되어야합니다.
그래서 내 머리 위로 떨어져이 같은 내 searchable
모습함으로써 인덱스에 순서 필드를 구체화하여이를 해결할 수 :
integer :sort_key do
contact_again_time.nil? ? (created_at.to_i * -1) : contact_again_time.to_i
end
를 그리고 내가 원하는 것을 얻기 위해 order_by(:sort_key, :desc)
을 . 하지만 이런 식으로 정렬 논리의 일부를 내 모델 내부에두고 더 중요한 것은 Lucene 인덱스 안에 넣고 있습니다.
다소 오히려 잘못된 것처럼 느껴지 겠지요. contact_again_time
가있을 때마다 sort=contact_again_time desc,created_at asc
, 그것은 내림차순으로 정렬 할 것이다 (그리고 관계를 깰 created_at
를 사용하여, 당신에게 무관) :
이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –
답변을 업데이트했습니다. – arun
나는 그것이 정확히 내가 찾고있는 대답이라고 말할 것이다. 방금 만난 문제는 이제 첫 번째 필드를 오름차순으로 정렬해야하므로이 경우에는 아무 값도 정렬되지 않으므로 다음과 같은 목적을 달성하지 못합니다. ( – Tigraine