Hello everyone,
A user enters the time of an event and the time zone of the event. Before
validation in the model, I set the zone of the time entered to the one
chosen (only changing the zone, not the time)
self.starts_at.zone = time_zone
extending ActiveSupport thus ...
module ActiveSupport
class TimeWithZone
def zone=(new_zone = ::Time.zone)
# Reinitialize with the new zone and the local time
initialize(nil, ::Time.__send__(:get_zone, new_zone), time)
end
end
end
and that gets saved nicely in the DB as UTC.
Upon editing that record, I keep getting different time zones being
displayed and they change upon page refresh or a new request.
Here is an example of the output after a refresh ...
http://i.imgur.com/jbKJC.jpg
Here are the relevant fields after being retrieved in the edit action
@event.to_yaml
attributes:
starts_at: 2011-07-08 17:00:00
invitation_expiry: 2011-07-08 16:50:00
time_zone: Pacific Time (US & Canada)
attributes_cache:
starts_at: 2011-07-08 17:00:00 Z
invitation_expiry: 2011-07-08 16:50:00 Z
And here''s some simple debug output from the relevant requests
logger.debug @event.starts_at.zone
# -> PDT
logger.debug @event.starts_at
# -> 2011-07-08 10:00:00 -0700
logger.debug @event.starts_at.in_time_zone(@event.time_zone) # -> 2011-07-08
10:00:00 -0700
logger.debug @event.starts_at.in_time_zone(''UTC'')
#
-> 2011-07-08 17:00:00 UTC
logger.debug @event.starts_at.zone
# -> UTC
logger.debug @event.starts_at
# -> 2011-07-08 17:00:00 UTC
logger.debug @event.starts_at.in_time_zone(@event.time_zone) # -> 2011-07-08
10:00:00 -0700
logger.debug @event.starts_at.in_time_zone(''UTC'')
#
-> 2011-07-08 17:00:00 UTC
Now, I thought Rails would do all the magic and convert my UTC time (from
the DB) in to the time zone that I set. As you can see, it does sometimes
but as it''s random, it''s obviously not doing what I thought it
would.
This takes me back to my mod_perl days of sometimes it works, sometimes it
doesn''t.
Does anyone have any insight in to this, please.
Any pointers would be great. Thanks
-ants
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.