Как я могу выбрать SUM в запросе, используя Rails 3 / MetaSearch? - PullRequest
7 голосов
/ 01 мая 2011

У меня есть приложение на Rails 3, в котором моя модель включает владельцев и свойства, причем каждый владелец представляет человека или организацию, которой принадлежит одно или несколько свойств.

Я хотел бы иметь возможность поиска в моей базе данных (SQLite3)и вернуть результаты, сгруппированные по владельцу.Для каждой группы я хотел бы отобразить:

-Имя владельца (я могу легко это сделать) -Общее количество свойств, принадлежащих этому владельцу, которые удовлетворяют условиям поиска (т. Е. Количество).-Общее значение всех свойств, подсчитанных в предыдущем столбце (т. Е. Сумма).

Владелец has_many Properties, а Property Property__ Owner.Кроме того, «значение» является атрибутом для свойства.

Я использую гем MetaSearch, и я могу получить его для правильного возврата коллекции свойств.Я также могу заставить его сгруппировать результаты по владельцу, но я не могу понять, как отобразить количество свойств и их суммарное значение.

Вот код для возврата списка свойств:

@search = Property.group("owner_id").search(params[:search])

Я попытался добавить .select к цепочке, как это:

@search = Property.select("SUM(value) as mysum").group("owner_id").search(params[:search])

Но я не могу получить доступ к этой сумме, когда пытаюсь.Кто-нибудь знает эффективный способ справиться с этой ситуацией?

1 Ответ

13 голосов
/ 03 сентября 2012

Я понимаю, что это старый, но он высоко в результатах поиска Google.

Вы можете просто назвать сумму. Глядя на ваш пример, вы получите примерно следующее:

Property.where(SEARCH_VALUES).group(:owner_id).sum(:value)

http://guides.rubyonrails.org/active_record_querying.html#sum

...