Excellent Geoff! That does the trick (and is cleaner than the massaging I was doing at the controller level in the meantime).
I figured it would be a very straightforward adjustment in rails (the long-term fix, that is). -John On Sep 10, 6:50 pm, Geoff B <[EMAIL PROTECTED]> wrote: > Hi John, > > We figured out the issue was the combination of time-only columns and > multiparameter attributes -- AR::Base#instantiate_time_object is > currently doing a time zone conversion for time-only columns, but it > shouldn't be. > > I'll try to pull in a fix for this in soon (should be simple, we just > need to add a check in #instantiate_time_object for the column type), > but in the meantime, this will work: > > class Store > def self.skip_time_zone_conversion_for_attributes > [:opens] > end > end > > Geoff > > On Sep 10, 2:11 pm, John Trupiano <[EMAIL PROTECTED]> wrote: > > > Hey Geoff, Liam, > > > I'm running into the same issue, and it's very simple to create an > > example. > > > 1) $> rails time_select_problem > > 2) $> cd time_select_problem > > 3) $> ruby script/generate scaffold stores name:string opens:time > > 4) Edit config/environment.rb, set config.time_zone = 'Eastern Time > > (US & Canada)' and config.active_record.default_timezone = :utc > > 5) $> rake db:create db:migrate > > 6) $> ruby script/server > > 7) Navigate to localhost:3000/stores/new > > 8) Create one, setting the time to 10:00 AM > > 9) After creation, go to show/edit. You'll see that the time is > > displayed in both as 3:00 PM. I can understand 'show' failing, as we > > haven't directly converted to this user's timezone. But edit _should_ > > show up correctly. If you check the database, you'll see that it was > > stored as 3:00 PM UTC. The conversion is made from EST to UTC. But > > when we pull it back out using either time_select or datetime_select, > > the conversion back is not made. > > > Does this better illustrate the problem? Is there a flaw in my > > process? Am I missing something here? It just doesn't seem right > > that I select 10:00 in the time slot, and then when I edit it with the > > same form, it shows something else! > > > -John > > > On Sep 7, 5:21 pm, Geoff B <[EMAIL PROTECTED]> wrote: > > > > HI Liam, > > > > I'd need a bit more info (rails version, config.time_zone setting, > > > store opening time column type, and exactly what you're doing when you > > > "refresh the form") to determine whether this is a framework issue or > > > an application design issue. > > > > Feel free to contact me directly if you like. > > > > Geoff > > > > On Sep 7, 12:30 am, Liam Morley <[EMAIL PROTECTED]> wrote: > > > > > I'm running into an issue where I'd like to use timezones in my > > > > application, but I'd also like to use times in places where timezone > > > > is not applicable. For example, I have a Store model, and I need to > > > > track what time of day the store opens. I'm using time_select to edit > > > > this field in my form, and when I submit the form with 0 hours, it > > > > goes in the db as 05:00:00 (I'm in EST). Then when I refresh the form, > > > > it reads this as 05:00:00, and so the displayed number for hours is > > > > always 5 more than I entered. Seems to me that the translation to/from > > > > utc is only occurring in one direction. > > > > > I'm posting this here on the advice of bitsweat from irc. If anybody > > > > wants more information or a pastie of sorts, let me know. > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
