Activerecord преобразует местный часовой пояс в UTC и обратно для вас.
Пример из моего производственного приложения.
У меня есть этот набор в моем приложении.rb
config.time_zone = 'Wellington'
(Это хорошая идея, чтобы четко указать часовой пояс приложения)
Так что в моем случае:
> Time.zone.now
=> Wed, 02 Nov 2011 21:12:58 NZDT +13:00
Консоль Rails:
> Audio.find(661256).broadcast_at
=> Thu, 02 Nov 2006 21:06:00 NZDT +13:00
А в базе данных:
mysql> select broadcast_at from audio where audio.id = 661256;
+---------------------+
| broadcast_at |
+---------------------+
| 2006-11-02 08:06:00 |
+---------------------+
Время в БД на 13 часов больше, чем в приложении Rails. Если бы я изменил свой часовой пояс на ваш (IST), времена в Rails были бы скорректированы, чтобы соответствовать, но времена DB остались прежними.
Поскольку возвращаемое время и время в вашем коде находятся в одной зоне, это просто сравнение объектов.