我有一个外部服务,允许我登录到我的网站用户。
为了避免因过度使用而被踢出,我在下面的表单中使用了一个MySQL
表来缓存用户访问:
username (STRING) | last access (TIMESTAMP) | has access? (TINYINT(1) - BOOLEAN)
如果用户在给定的时间有访问权限,我相信他有访问权限,并且在一天内不查询服务,即
query_again = !user["last access"].between?(Time.now, 1.day.ago)
出于某种原因,这总是返回true,对这个逻辑有帮助吗?
最佳答案
在ranges(您在这里有效地使用了它)中,通常期望较低的数字是开始,较高的数字是结束。因此,如果您在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
关于mysql - 获取时间间隔在 ruby ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20609312/