4
Ransack에 항상 NULLS LAST
을 추가하여 정렬 열에 마지막으로 null을 추가합니다.Ransack Rails Gem에 NULLSAST를 추가하여 정렬하는 방법
이 작업을 수행하는 방법은 무엇입니까?
내가이 일에 github의 문제를 열었다 : https://github.com/activerecord-hackery/ransack/issues/443Ransack에 항상 NULLS LAST
을 추가하여 정렬 열에 마지막으로 null을 추가합니다.Ransack Rails Gem에 NULLSAST를 추가하여 정렬하는 방법
이 작업을 수행하는 방법은 무엇입니까?
내가이 일에 github의 문제를 열었다 : https://github.com/activerecord-hackery/ransack/issues/443대답은 위의 질문에 링크 된 스레드에서 발견된다. 그것을 여기에 써서 쉽게 찾을 수 있습니다. 분명히 주문 문자열을 다시 작성하고 Null Last
을 추가해야합니다. 당신은 당신이 어떤 종류의 parametre이없는 때를 제외해야하지만
@q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
, 그래서 이것은 내 마지막 솔루션입니다 :
이 나를 위해 그것을 해결 (모든 컬럼에서 작동)
@q = Project.ransack(params[:q])
@fields = current_user.settings.default_project_fields
if @q.sorts.present?
@result = @q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
else
@result = @q.result
end
이것은 좋은 해결책이지만 관련 링크를 정렬 할 때 작동하지 않습니다. 정렬 링크의 원시 값을 사용하기 때문에 ... 예를 들어'ORDER BY tasks.created_at'는 'ORDER BY tasks_created_at'가됩니다. 주문 재 작성 – agbodike
@agbodike 관련 레코드를 정렬하는 방법은 무엇입니까? –
아니요,하지만 긴급하지 않은만큼 업무를 연기 했으므로 대안을 찾기에는 너무 많은 시간을 소비하지 않았습니다. – agbodike