2010-02-20 7 views
3

해결책을 찾을 수 없다는 오류가 있습니다..sum에 정의되지 않은 메서드 오류가 발생했습니다.

Week.find(1).results.sum('box') 

A는 열 상자의 SUM을 얻을 수있는 IT 완벽하게 작동합니다

나는 실행하면! 내가 거기에 필터를 적용 할 때

는하지만 :

Week.find(1).results.find(:all, :joins => [:seller],:conditions => ['sellers.user_id = ?', 1]).sum('caixas') 

을 나는 오류 NoMethodError: undefined method '+' for #<Result:0x103239e58>

반환 된 객체가 나는 콘솔에 인쇄하고 아무 잘못이 표시되지 않는 동일을 얻는다.

누군가가 그것에 대해 알고 있습니까?

Tks!

답변

3

ActiveRecord#sum은 ActiveRecord 방법입니다.

Week.find(1).results은 Week 클래스의 동일한 메서드를 노출하는 연결 프록시를 반환하기 때문에 첫 번째 경우가 작동합니다.

두 번째 경우는 ActiveRecord 모델이 아닌 Array 객체에서 #sum을 호출하는 것입니다. 두 번째 사례를 사용하려면 범위 또는 연결 프록시를 사용해야합니다.

변경

Week.find(1).results.find(:all, :joins => [:seller],:conditions => ['sellers.user_id = ?', 1]).sum('caixas') 

Week.find(1).results.scoped(:joins => [:seller], :conditions => ['sellers.user_id = ?', 1]).sum('caixas') 
관련 문제