Быстрый пример:
prep_time = 40.minutes
cook_time = 50.minutes
total_time = prep_time + cook_time
formatted_total_time = Time.at(total_time).gmtime.strftime('%I:%M')
# outputs 01:30 which is HOURS:MINUTES format
Если вы хотите вместо 90 минут:
formatted_total_time = total_time / 60
# outputs 90
Обновление:
Поместите это в вспомогательный файл, связанный с любым представлением, в котором вы используете это (т.е. app/helpers/recipes_helper.rb
)
module RecipesHelper
def convert_to_gregorian_time(prep_time, cook_time)
# returns as 90 mins instead of 1hr30mins
return (prep_time + cook_time) / 60
end
end
Тогда вы просто назвали бы это в своем представлении (то есть app/views/recipes/show.html.haml
, например:
# Note: this is HAML code... but ERB should be similar
%p.cooking_time
= convert_to_gregorian_time(@recipe.prep_time, @recipe.cook_time)
Если вы храните время в базе данных как целые числа (что вы ДОЛЖНЫ делать), то вы можете сделать это:
%p.cooking_time
= convert_to_gregorian_time(@recipe.prep_time.minutes, @recipe.cook_time.minutes)
, где @recipe.prep_time
- целое число со значением 40, а @recipe.cook_time
- целое число со значением 50
.
и ваша схема базы данных будет выглядеть примерно так:
# == Schema Information
#
# Table name: recipes
#
# id :integer not null, primary key
# prep_time :integer
# cook_time :integer
# # other fields in the model...