Rails est génial, il prendra en charge le fuseau horaire dans l'application avec Time.zone
. Je dois être en mesure de prendre en charge le fuseau horaire qu'un utilisateur sélectionne pour un enregistrement. L'utilisateur sera en mesure de sélectionner la date, l'heure et le fuseau horaire de l'enregistrement et je souhaite que tous les calculs soient effectués par rapport au fuseau horaire sélectionné par l'utilisateur.Modèle ActiveRecord avec horodatage avec attribut de prise en charge du fuseau horaire
Ma question est quelle est la meilleure pratique pour gérer les fuseaux horaires sélectionnés par l'utilisateur. Le modèle utilise un time_zone_select
et datetime_select
pour deux attributs différents timezone
et scheduled_at
. Lorsque le modèle enregistre, l'attribut scheduled_at
est converti en Time.zone
défini localement.
Lorsqu'un utilisateur retourne à modifier l'attribut scheduled_at
avec le datetime_select
le datetime est réglé sur le fuseau horaire converti Time.zone
et non l'attribut timezone
. Existe-t-il une bonne façon de gérer la conversion au fuseau horaire sélectionné par l'utilisateur?
J'apprécie les commentaires. C'est loin de ce que je cherche, car je n'essaie pas de le faire sur un niveau d'utilisateur pur. Ce que je pense que je dois faire est d'avoir deux horodatages, un qui représente l'heure et le fuseau horaire choisis par l'utilisateur et l'autre comme la version d'UTC. – jtarchie
Je ne recommanderais pas cela, car cela aura tendance à causer une confusion sur quel horodatage représente à quelle heure. Il est préférable d'utiliser par défaut UTC pour stocker les horodatages et les convertir en avant et en arrière sur l'affichage/la mise à jour. ActiveRecord gère cela pour vous. – mikezter