2012-12-26 3 views
1

Mon application existe depuis plus de 6 mois dans le fuseau horaire UTC. Cela signifie que tous les objets ActiveRecord et MongoDB ont été créés dans le fuseau horaire UTC. Assez curieux, si j'aller de l'avant et de changer le paramètre applicable dans application.rb:Ruby on Rails changeant de fuseau horaire pour l'application

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

Est-ce que ce convertir les enregistrements qui ont été créés dans UTC le fuseau horaire EST? Qu'en est-il des enregistrements MongoDB? (J'utilise Mongoid comme mon pilote Ruby). Est-ce aussi simple que de basculer un commutateur dans application.rb et c'est tout?

Répondre

3

ActiveRecord va stocker tout en UTC indépendamment de ce que dit config.time_zone; J'ai du mal à trouver une référence faisant autorité à ce sujet, le meilleur que j'ai trouvé jusqu'ici est le docs ActiveRecord::Timestamp. MongoDB should also be storing everything in UTC:

Date de

BSON date est un entier de 64 bits qui représente le nombre de millisecondes depuis l'époque UNIX (1 Janvier 1970). La spécification BSON officielle fait référence au type de date BSON en tant que UTC datetime.

Donc rien dans vos bases de données ne devrait changer ou avoir besoin d'être changé. Le paramètre config.time_zone est uniquement utilisé dans le domaine Rails, il n'a rien à voir avec le fuseau horaire utilisé dans vos bases de données, vous ne devriez donc pas avoir à vous soucier de quoi que ce soit.