Первый шаг, который я бы предпринял:
def hours_total
@hours_total = user.open_departments.each_with_object({}) do |department, h|
positive = [sport_hours, science_hours, internship_sum, art].sum do |pos_h|
pos_h[department].to_i
end
negative = [obligatory_topics, base].sum do |neg_h|
neg_h[department].to_i
end
h[department] = positive - negative
end
end
Примечание: , если ваши часы могут быть значениями с плавающей запятой, замените to_i
на to_f
.
Теперь, если вы и ваш Рубокоп в порядке с этим, я, вероятно, оставлю это.Если кто-то из вас несчастлив, то positive
и negative
должны быть извлечены в метод.