我有一个外部服务,可以让用户登录我的网站。
为了避免因过度使用而被踢出它,我使用了以下形式的 MySQL
表来缓存用户访问:
username (STRING) | last access (TIMESTAMP) | has access? (TINYINT(1) - BOOLEAN)
如果用户在给定时间可以访问我相信他可以访问并且不会在一天内查询服务,即
query_again = !user["last access"].between?(Time.now, 1.day.ago)
由于某种原因,这总是返回 true,对这个逻辑有什么帮助吗?
最佳答案
在范围内(您在这里有效地使用),通常期望较低的数字是开始,较高的数字是结束。因此,如果您只是在 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/