Чего именно вы пытаетесь достичь с помощью этого запроса?Вы пытаетесь получить сумму всех Effort
часов или сгруппировать их каким-либо другим способом?
Запрос ниже
@records = Effort.find( :all,
:select => 'full_name, taskType, sum(hours)',
...
будет когда-либо возвращать только 1 значение, потому что выВы выбираете sum(hours)
, в результате чего SQL объединяет результаты в первой строке.Это означает, что вы всегда получите свою первую Effort
строку с полем sum(hours)
, равным общему количеству часов, потраченных на все усилия.
Если вы просто хотите получить сумму всех Effort
часов, вы можете сделать это:
Effort.sum(:hours)
Если вы хотите суммировать часы на основе некоторых других критериев, обновите ваш вопрос.
РЕДАКТИРОВАТЬ
В этом случае вы можете сделать что-то вроде этого,
@records = Effort.group(:full_name, :taskType).sum(:hours)
В результате вы получите хеш, который выглядит так:
[full_name, taskType] => count
т. Е.
['baking cookies', 'baking'] => 12
['baking cakes', 'baking'] => 2
...
Вы можете выполнить итерацию по нему следующим образом:
@records.each do | (full_name, task_type), hours |
puts 'Full Name: #{full_name}, Task Type: #{task_type}, Total Hours: #{hours}'
end