在红宝石中获取时间间隔

时间:2013-12-16 11:02:40

标签: mysql ruby-on-rails ruby web-services rails-activerecord

我有一个外部服务,允许我将用户登录到我的网站。

为避免因过度使用而被踢出,我在下面的表格中使用MySQL表来缓存用户访问:

username (STRING) | last access (TIMESTAMP) | has access? (TINYINT(1) - BOOLEAN)

如果用户在给定时间内有权访问,我相信他有权访问,并且不会在一天内查询服务,即

query_again = !user["last access"].between?(Time.now, 1.day.ago)

由于某些原因,这总是会返回true,对此逻辑有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

在范围(您在这里有效使用)中,通常期望较低的数字是开始,较高的数字是结束。因此,如果您只是在between?电话

中切换条件,它应该适用于您
query_again = !user["last access"].between?(1.day.ago, Time.now)

您可以在IRB中轻松自行测试:

1.hour.ago.between?(Time.now, 1.day.ago)
# => false

1.hour.ago.between?(1.day.ago, Time.now)
# => true