에 의해 순서는, 내가 좋아하는 뭔가를하고 있어요 :will_paginate는 포함하고 조인 된 테이블 그래서
user.students.includes(:exams).ungraded.paginate(:page =>
params[:page]).order("exams.created_at desc")
그러나,이 미묘한 문제가 발생합니다. 어딘가에 활성 레코드의 내장에, 한계는이 같은 학생 아이디의에 뚜렷한을 만든다 :
id | alias_0
----+---------
42 | 256
42 | 257
42 | 260
문제를 참조하십시오
SELECT DISTINCT "students".id, exams.id AS alias_0 FROM "students"
LEFT OUTER JOIN "exams" ON "exams"."student_id" = "students"."id"
WHERE "students"."ready_for_grading" = 't' ORDER BY exams.id LIMIT 10 OFFSET 0;
그러나,이 같은 결과가 발생할 수 있습니다? 궁극적으로 한도가 높아지기 때문에 학생 ID와 시험 ID를 모두 선택하여 "사용했습니다"라는 이유로 많은 학생 ID를 가져 오지 못합니다. 주문.
이것은 Rails 3.2.1 및 PostgreSQL 9.1입니다.
편집
나는 무슨 일이 일어나고하면 해당 PAGINATE는 그 다음 두 번째 쿼리에 공급 학생들의 목록을 얻을 수있는 쿼리를 사용하고 있지만 왼쪽 외부 조인 때문에, 우리는 것 같아요 학생들을위한 뚜렷한 결과를 얻지 못하기 때문에 우리가 가지고있는 10 개의 슬롯을 "부족하게"채우고 일반적으로 혼란스럽게합니다. 나는 이것이 어딘가에있는 버그라고 생각하지만, 누가 그것을 고정해야할지 모르겠다.