2015-07-28 4 views
0

У меня есть таблица, которая содержит все задания, каждое задание имеет связанное количество часов, разбитых по месяцам в другой таблице, у него может быть несколько часов в течение нескольких лет. Есть ли способ фильтровать на основе задания, а затем суммировать часы, чтобы отображать только часы для каждой работы?Как фильтровать и суммировать данные?

Будет что-то вроде этой работы?

<% total_hours = l.month_hours.pluck('m1','m2','m3','m4','m5','m6','m7','m8','m9','m10','m11','m12') %> 
+0

Вы можете показать свои отношения лучше? – blnc

ответ

1

Я не уверен в ваших отношениях, но если:

Job has_many Month 

и

Month has a hours value 

Тогда вы могли бы запросить работу и получить все часы, как это:

hours = Job.find(id).months.map(&:hours).reduce(:+) 
+1

Вы должны использовать ['.pluck (: hours)'] (http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck) вместо '.map (&: hours) '. Тем не менее, может быть более полезно выполнять 'Job.find (id) .months.sum (: hours)', в зависимости от типов. –

+0

Отношения - это работа, имеет много часов, в часах лет, она делится на месяц. Также я уже прохожу через цикл со связанными заданиями во второй ячейке. –

Смежные вопросы