У нас была та же проблема с датами, часовыми поясами и MySQL. Последний предполагает, что вы предоставляете ему значения даты / времени в часовом поясе, с которым он настроен.
Но, так как вы настроили Rails для обработки времени в UTC, ActiveRecord преобразует любые значения даты / времени в UTC (таким образом, вторник 25 ноября, 17:40:48 -0800 2008 становится ср. 26 ноября, 01:40:48 0000 2008) до используя значение в запросе обновления / создания SQL, который он генерирует и отправляет в MySQL.
В псевдокоде
("time = %t", Tue Nov 25 17:40:48 -0800 2008) => "time = '2008-11-26 01:40:48'
, который рассматривается как MySQL 2008-11-26 01:40:48 -0800 .
Посмотрите файл журнала отладки, и вы поймете, что я имею в виду. Единственный способ, которым он может работать должным образом (то есть без неприятных сюрпризов), - это установить один и тот же часовой пояс в Rails и MySQL, который является UTC. Это конфигурация, которую мы используем.