Группа рельсов по нескольким столбцам
У меня есть таблица бюджетов с 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
и делать некоторые вычисления на нем.
Ответы
Ответ 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]