Fuso orario con binari 3

Ho un problema abbastanza comune, ma per qualche ragione ho provato tutti i suggerimenti sul web e nessuno sembra funzionare.

Ho impostato il fuso orario in config su ‘EST’

config.time_zone = 'Eastern Time (US & Canada)' 

Ma quando viene visualizzata l’ora sullo schermo, continua a mostrare l’ora UTC che è memorizzata nel DB. Ho provato il debugger e qui è l’output

 (rdb:1) Time.zone #<ActiveSupport::TimeZone:0x1061f4760 @utc_offset=nil, @current_period=nil, @name="Eastern Time (US & Canada)", @tzinfo=#> (rdb:1) Order.first.placed_at Fri Jan 01 15:00:00 UTC 2010 

Aggiornamento: ecco un altro utente che ha la stessa domanda Il fuso orario delle rotaie è sbagliato quando viene mostrato

Prova in_time_zone . Per esempio

 >> Time.now => Sun Dec 05 21:34:45 -0500 2010 >> Time.zone => #, @utc_offset=-28800, @current_period=nil> >> Time.now.in_time_zone => Sun, 05 Dec 2010 18:34:54 PST -08:00 

Nel tuo caso, vuoi Order.first.placed_at.in_time_zone .

Se desideri impostare un fuso orario diverso per i diversi utenti della tua app , assicurati di utilizzare un filtro around_filter in contrasto con un filtro precedente per modificare Time.zone. Qualcosa che riguarda il modo in cui Time.zone passa ad altri thread e quindi altri utenti potrebbero ereditare un fuso orario che non dovrebbero. Da questo post sul blog: http://ilikestuffblog.com/2011/02/03/how-to-set-a-time-zone-for-each-request-in-rails/

in application_controller.rb:

 around_filter :set_time_zone private def set_time_zone old_time_zone = Time.zone Time.zone = current_user.time_zone if logged_in? yield ensure Time.zone = old_time_zone end 

Ho anche trovato utile utilizzare il metodo helper della forma time_zone_select quando si consente agli utenti di modificare il proprio fuso orario. Se hai chiamato il tuo campo: time_zone, lo useresti come:

 f.time_zone_select(:time_zone) 

E infine, sembra davvero fantastico. Rileva automaticamente e imposta il fuso orario tramite javascript . Ecco la gem delle rotaie da aggiungere alla pipeline degli asset: https://github.com/scottwater/detect_timezone_rails e il relativo post sul blog: http://www.scottw.com/automated-timezone-detection

Verifica che il tuo ActiveRecord::Base.time_zone_aware_attributes sia vero.

Penso che quello che stai descrivendo sia questo bug – https://github.com/rails/rails/issues/6816