Sto cercando di convertire la nostra applicazione Rails 2.3 per gestire correttamente i fusi orari (al momento tutto è in UTC che non è giusto, ma è conveniente!).Memorizzare correttamente le date con TimeZone nel DB MySQL per un'applicazione Rails
ho queste impostazioni in environment.rb:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
Andando avanti, ad ogni richiesta nella nostra app Ho intenzione di fare la seguente impostazione per impostare il fuso orario:
Time.zone = user.time_zone
Dove user.time_zone
è la preferenza scelta (ad esempio US Pacific Time
).
Questo funziona correttamente nell'app, ma la mia domanda si riferisce a ciò che Rails quindi memorizza nel DB MySQL. Se l'utente sceglie una data del 1 ° giugno 2009, questa viene archiviata in un campo DATETIME
nel database in UTC ma con l'offset del fuso orario. Ad esempio, se l'utente ha selezionato un fuso orario GMT+6
, una data scelta del 1 giugno 2009 finisce nel database come 2009-06-01 06:00:00 UTC
.
Mi sarei aspettato che questo fosse memorizzato come 2009-06-01 00:00:00 UTC
nel database. Il mio pensiero è corretto o Rails sta facendo qualcosa di inaspettato qui?
Hai solo bisogno di visualizzare le date nel fuso orario dell'utente, o è importante memorizzarlo in modo specifico in quel fuso orario? –
Chris Mi piacerebbe archiviarlo in UTC e visualizzare solo le date nel fuso orario dell'utente – Olly