2010-02-20 3 views
3

У меня есть ошибка, что я не могу найти решение.Неопределенная ошибка метода на .sum

Когда я бегу:

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

получить SUM коробки колонки об этом, это работает отлично!

Но когда я применяю фильтр в нем:

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.

Во втором случае вы вызываете #sum на объект Array, а не на модель ActiveRecord. Если вы хотите, чтобы второй случай работал, вы должны использовать область действия или прокси-сервер.

Изменить

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') 
Смежные вопросы