나는 이걸로 내 머리카락을 찢어 버릴거야. 배열을 만들기 위해 데이터베이스에서 나가야하는 일련의 레코드가 있습니다. positive_votes
은 각 opinion
에있는 정수 값의 열이므로 당연히 가장 높은 정수 값을 가진 다섯 개의 Opinion
레코드 만 가져 와서 가장 높은 값 (상위 값)에서 다섯 번째 값까지 순서대로 반환하려고합니다. Rails 가이드를 읽으면서 다음 쿼리를 작성했습니다.Rails의 테이블 열에 따라 정렬
@opinions = Opinion.order(positive_votes: :desc).limit(5)
불행히도, 작동하지 않습니다. 그것이하는 것처럼 보이는 것은 시간순으로 생성 된 첫 번째 레코드를 리턴 한 다음 네 개의 다음 레코드를 리턴하는 것입니다. 긴 하루 였으므로 나는 이것이 바보 같은 실수가 될 수있는 준비가되어 있지만 도움이된다면 정말 감사 할 것입니다.
편집 :
다음과 같이 생성 된 SQL은,
(0.1ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "opinions" LIMIT 5) subquery_for_count
Opinion Load (0.1ms) SELECT "opinions".* FROM "opinions" ORDER BY '---
:postive_votes: :desc' LIMIT 5
로그가 생성하는 원시 SQL을 인쇄합니까? – Phlip
예 - 질문을 업데이트합니다. –