2013-09-25 4 views
0

내보기에서 리더 테이블을 만들려고합니다. 나는 모든 사용자의 목록을 표시하고 각 사용자는 하나 이상의 이벤트를 입력 할 수 있습니다 (사용자는 => 결과를 ​​통해 많은 이벤트에 속합니다)는 각 이벤트에서 : 상대 이벤트에서 획득 한 포인트입니다.조인 테이블의 값 합계로 순서를 설정하는 방법

컨트롤러 작성에 문제가 있습니다. 나는 효과의 무언가를 원한다.

@standings = User.find(:all, :order => 'User.results.points.sum'); 

결과의 각각의 점의 순서로 모든 사용자의 목록.

(나는 위의 코드는 긴 방법 꺼져 알 -가 난 후 무엇을 설명하기 위해 내 시도되는) 사람이 할 수있는 최선의 방법에 나에게 몇 가지 조언을 줄 수 있다면

매우 감사 드리겠습니다 이. 다음과 같은

답변

2

뭔가 :

User.joins(:results).group("users.id").order("SUM(results.points)") 

이 results.points의 합으로 다음 사용자가 결과 테이블에 사용자, 그룹, 주문을 결합합니다.

그럼 당신은 당신이 첫번째 점의 가장 높은 수를 원하는 그렇다면 같은 순서를 조정할 수 있습니다

User.joins(:results).group("users.id").order("SUM(results.points) DESC") 
+0

우수함! - 그게 잘 작동합니다 - 많이 고마워요 –

+0

문제 없습니다. 최근에 저 자신을 통해 고심했습니다 ... –