Неопределенная ошибка метода в .sum - PullRequest
3 голосов
/ 20 февраля 2010

У меня ошибка, я не могу найти решение.

Когда я бегу:

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

Получите СУММУ колонки и она отлично работает!

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

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

Я получаю сообщение об ошибке NoMethodError: undefined method '+' for #<Result:0x103239e58>

Возвращенный объект такой же, я его печатаю на консоли и не вижу ничего плохого.

Кто-нибудь знает что-нибудь об этом?

Tks!

1 Ответ

3 голосов
/ 20 февраля 2010

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...