ActiveRecord, DateTime, Time Zones and You
When you create an ActiveRecord Model and save it to the database (Model.create), Rails stores the current time in UTC, not your current time zone. When you retrieve the record (Model.find), Rails converts the time from UTC back into your own time zone.
Problems arrive when you try to find your records by a specific time:
Model.find(:all, :conditions => ["created_at < ?", Time.now]
or when trying to perform an action that skips ActiveRecord:
Model.update_all(["updated_at = ?", Time.now], "id = 1")
You have to use Time.zone.now to get the time in the right time zone to send to ActiveRecord. This link might explain it better: http://www.idolhands.com/ruby-on-rails/guides-tips-and-tutorials/activerecord-find-conditions-and-time-zone-suppor