Rails: Comment créer une colonne de temps avec timezone sur postgres
J'ai un rails application qui fonctionne sur postgres db. J'ai un modèle appelé UserTimings où il y a deux champs from_time et to_time.
t.time "from_time"
t.time "to_time"
J'ai attendu que le temps sera stocké en toute UTC format avec le fuseau horaire de l'information. Après un peu de temps, j'ai réalisé que la base de données a ce genre de requête SQL pour créer la table.
from_time time without time zone,
to_time time without time zone,
Je ne veux pas de ça. Je veux stocker avec fuseau horaire. Je veux le +0530 truc dans le temps UTC, qui, je ne suis pas bien que les rails de l'application a été configuré pour gérer. Merci de me dire comment écrire une migration de la force de la db utiliser le fuseau horaire.
Merci.
source d'informationauteur G Sree Teja Simha
Vous devez vous connecter pour publier un commentaire.
Que la migration de faire exactement ce que vous voulez
Types sont de votre choix. Vous pouvez écrire ici n'importe quel type, que postgresql supporte. Mais il peut y avoir des problèmes avec la conversion des types de rails peuvent comprendre.
Vous semblez être confus au sujet de deux choses distinctes, ici - les deux erreurs les plus courantes, presque tout le monde fait au moins l'un d'entre eux.
Tout d'abord", UTC format avec le fuseau horaire de l'information" n'est pas en spécifiant un temps. C'est la spécification de temps ET de lieu.
Deuxièmement PostgreSQL "timestamp avec le fuseau horaire" n'est pas en fait un magasin de fuseau horaire. Il stocke un horodatage UTC mais il accepte un fuseau horaire. Un meilleur choix de nom serait quelque chose comme "temps absolu". Vous pouvez comparer les deux de ces valeurs directement.
Un timestamp sans fuseau horaire n'est pas réellement vous donner un temps à moins d'avoir une place. Vous ne pouvez pas comparer les deux de ces, sauf si vous savez de quel fuseau horaire est.
Cela ressemble à ce que vous voulez est un timestamp sans fuseau horaire et d'un autre fuseau horaire. De cette façon, vous pouvez dire "2pm mardi, Heure de Londres".
Pas sûr que c'est ce que vous voulez, mais cela fonctionne pour moi:
Mais les rails semble impossible de reconnaître timetz type, il sera traité comme une Chaîne de caractères. Pour contourner ce problème, je m'inscrire timetz comme le temps.
BTW, mon environnement est rails-4.2