0

나는 이걸로 내 머리카락을 찢어 버릴거야. 배열을 만들기 위해 데이터베이스에서 나가야하는 일련의 레코드가 있습니다. 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 
+0

로그가 생성하는 원시 SQL을 인쇄합니까? – Phlip

+0

예 - 질문을 업데이트합니다. –

답변

1

난 당신이 기호 order를 사용할 수 있다고 생각하지 않습니다. 다음을 시도하십시오.

@opinions = Opinion.order('positive_votes desc').limit(5) 
+0

그러면 SELECT 문에서'.to_s' barf가 설명 될 것입니다.''--- : postive_votes :: desc'' – Phlip

+0

잘 처리되었습니다. 어떤 이유로 나는'.order' 메서드로 심볼을 사용해야한다고 확신했다. –

관련 문제