Я часто нахожу, что использование разработки через тестирование помогает вести меня, когда сталкивающийся с этими вопросами.
, Таким образом, я сказал бы, что TDD помогает вести меня для записи кода, который достаточен в то время, и возможно что еще более важно, помогает мне внести изменения позже, когда неизбежно изменение требований, больше функциональности требуется, и т.д.
Класс Time
напрямую не знает вашего настроенного часового пояса. В Rails 2.1 добавлена поддержка часовых поясов, но Время
по-прежнему будет действовать в соответствии с вашим местным часовым поясом. Вот почему Time.now возвращает время BST.
Вы, вероятно, захотите взаимодействовать с Time.zone
. Вы можете вызывать методы для этого, как и сам класс Time, но он будет возвращать его в указанном часовом поясе.
Time.zone.now # => Tue, 11 Aug 2009 21:31:45 UTC +00:00
Time.zone.parse("2:30 PM Aug 23, 2009") # => Sun, 23 Aug 2009 14:30:00 UTC +00:00
Еще одна вещь, с которой вам нужно быть осторожной, - это если вы когда-нибудь будете делать запросы к базе данных, где вы сравниваете время, но обязательно используйте время UTC (даже если у вас указан другой часовой пояс), потому что Rails всегда хранит UTC в базе данных.
Item.all(:conditions => ["published_at <= ?", Time.now.utc])
Кроме того, вместо Time.now-1.hour
сделайте ] 1.hour.ago
. Его легче читать, и Rails будет автоматически использовать настроенный часовой пояс.