Подтвердить что ты не робот

Группа рельсов по нескольким столбцам

У меня есть таблица бюджетов с emptype_id и calendar_id actual_head, оцененная_хед

когда я делаю Budgets.sum(:actual_head ,:group=>"emptype_id,calendar_id"), я не получаю результат, сгруппированный двумя вышеупомянутыми столбцами, но только с помощью emptype_id

однако, когда я проверяю журнал, SQL-запрос прав

SELECT sum(`budgets`.actual_head) AS sum_actual_head, emptype_id,calendar_id AS emptype_id_calendar_id FROM `budgets` GROUP BY emptype_id,calendar_id

имеет 103 строки

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

4b9b3361

Ответ 1

Группировка с несколькими столбцами не может поддерживаться рельсами. Вы должны использовать обычную find all:

budgets = Budgets.find(:all, 
                       :select => "emptype_id, calendar_id, sum(budgets.actual_head) AS sum_actual_head", 
                       :group => "emptype_id, calendar_id")

budgets.each { |budget| puts budget.sum_actual_head }

Ответ 2

Я обманываю. Do :group => ["emptype_id,calendar_id"].

Не хочу тебя и не хочу, но это работает как минимум.

Ответ 3

Я не уверен в этом, попробуйте :group => [:emptype_id, :calendar_id]