2010-09-10 171 views
0

我在使用Time.now时遇到问题。由于某种原因,当我将一个对象保存到数据库时,它保存了2000年的数据。我试图比较我保存在数据库中的对象Time.now,以检查它是否更大,但它总是返回因为2000年是虚假的。有人知道我可以解决这个问题的方法吗?Ruby on Rails Time.now

我只需要检查,确保了10分钟,过去了,因为我创建了一个对象时相比Time.now

+0

您正在使用哪个数据库引擎? – 2010-09-10 08:18:02

回答

2

这听起来像你的数据库列是time型的,而不是datetimetimestamp。这只会存储时间,当它被转换为红宝石(支持日,月,年等)的Time实例时,默认值用于日,月,年,这就是为什么你会看到2000年。

如果这是问题,您可能需要将数据库列更新为datetimetimestamp,因为它听起来像是您希望无论如何都需要日,月,年的部分时间。在这种情况下,你的比较将起作用。

+0

是的,这听起来似乎合理。 – einarmagnus 2010-09-10 08:23:13

+0

是的,该列是类型时间。我一直在尝试created_at部分,它仍然无法正常工作。 – Brian 2010-09-10 08:25:18

+0

不确定你的意思。我没有提到created_at。 – Shadwell 2010-09-10 08:35:34

0

created_at < 10.minutes.ago应该工作

+0

这似乎并没有工作..如果我只是创建对象,类型1分钟前后2它仍然说真 – Brian 2010-09-10 08:05:37

+0

尝试追加to_date,并看到它有助于'created_at <10.minutes.ago.to_date' – einarmagnus 2010-09-10 08:15:36

+0

是你的数据库服务器与运行代码在同一台机器上? – einarmagnus 2010-09-10 08:16:30