Я хотел бы записать простую функцию для высказывания в течение многих часов:
Сколько передало время, так как это было создано?
Мои попытки:
-time = DateTime.now.hour - (self.created_at.hour)
Кто-либо знает, как сделать это в Ruby on Rails?
Rails обычно использует Time
, а не DateTime
. Почему бы вам не сделать Time.now - self.created_at
? Затем вы можете преобразовать секунды в часы, разделив на 3600.
Вы ищете функцию time_ago_in_words(from_time, include_seconds = false). Вот несколько примеров из документации:
time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => 15 hours
time_ago_in_words(Time.now) # => less than a minute
from_time = Time.now - 3.days - 14.minutes - 25.seconds # => 3 days
Получилось! Сначала нужно убедиться, что ваши данные находятся в тех же данных, из которых они будут вычитаться, будь то Time или DateTime. Я выбрал время. Затем вы делите его на встроенные в Ruby методы времени. Это переводится как сколько дней, но это также может быть, 1.час. и т.д.
(Time.now - self.created_at.to_time)/1.day