我有一个外部服务,允许我将用户登录到我的网站。
为避免因过度使用而被踢出,我在下面的表格中使用MySQL
表来缓存用户访问:
username (STRING) | last access (TIMESTAMP) | has access? (TINYINT(1) - BOOLEAN)
如果用户在给定时间内有权访问,我相信他有权访问,并且不会在一天内查询服务,即
query_again = !user["last access"].between?(Time.now, 1.day.ago)
由于某些原因,这总是会返回true,对此逻辑有什么帮助吗?
答案 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