У меня есть модель CardioExercise с атрибутом продолжительности (Ruby 2.2.4 Time type). Мне нужно написать метод для вычисления общей продолжительности аэробной деятельности участником в течение прошлой недели.Ruby: Как суммировать массив объектов Time?
Вот что у меня до сих пор:
def minutes_cardio_exercise_last_week
array = @user.member.cardio_exercises.between_times(1.week.ago.beginning_of_week, 1.week.ago.end_of_week).map { |d| d[:duration] }
hour, min, sec = ??
(hour * 60 + min + sec/60).round
end
В консоли Rails, массив содержит:
=> [2000-01-01 00:25:00 UTC, 2000-01-01 00:30:00 UTC, 2000-01-01 00:53:20 UTC]
Те временные объекты, я ожидал, но я могу» t выяснить, как суммировать значения, чтобы получить что-то вроде 108 минут аэробной активности на прошлой неделе?
Во время моего исследования я нашел два сообщения, которые затрагивают проблему с помощью PHP. Третья позиция - Ruby, но я не могу понять, как адаптировать решение для моей цели.
How to Sum Time Value in Array | How to sum time in array? | Ruby: Average array of times
Я ценю любую помощь и понимание.
Время очень не подходит для использования в качестве продолжительности. Вы сэкономите массу неприятностей (как вы уже обнаружили), просто используя целое число минут. –