2010-09-10 9 views
0

Je vais avoir du mal à travailler avec Time.now. Pour une raison quelconque, lorsque je sauvegarde un objet dans la base de données, il l'enregistre pour l'année 2000. J'essaie de faire une comparaison avec l'objet que j'ai enregistré dans la base de données pour Time.now afin de vérifier s'il est plus grand faux à cause de l'année 2000. Est-ce que quelqu'un sait d'une manière que je peux contourner cela?Ruby on Rails Time.now

J'ai juste besoin de vérifier pour vous assurer que 10 minutes se sont écoulées depuis que je créé un objet de temps par rapport à Time.now

+0

Quel moteur base de données utilisez-vous? –

Répondre

2

Il semble que votre colonne de base de données est de type time plutôt que datetime ou timestamp. Cela ne fera que stocker le temps et quand il est converti en une instance Time en rubis (qui fait jour de soutien, mois, année, etc.) les valeurs par défaut sont utilisées pour jour, mois, année qui est la raison pour laquelle vous voyez l'an 2000 .

vous avez probablement besoin de mettre à jour votre colonne de base de données pour être datetime ou timestamp si tel est le problème car il semble que vous voulez que le jour, mois, année parties du temps de toute façon. Dans ce cas, vos comparaisons fonctionneront.

+0

ouais, cela semble plausible. – einarmagnus

+0

oui, la colonne est du type heure. J'ai essayé la partie created_at et cela ne fonctionne toujours pas .. – Brian

+0

Je ne sais pas ce que vous voulez dire. Je n'ai pas mentionné created_at. – Shadwell

0

created_at < 10.minutes.ago devrait fonctionner

+0

qui ne semble pas fonctionner .. Si je viens de créer l'objet et le type il y a 1 minute après 2, il dit toujours vrai – Brian

+0

essayer annexant to_date et de voir ce qui aide 'created_at <10.minutes.ago.to_date' – einarmagnus

+0

Est-ce votre serveur de base de données sur la même machine que le code en cours? – einarmagnus