我有一个外部服务,允许我登录到我的网站用户。
为了避免因过度使用而被踢出,我在下面的表单中使用了一个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/

10-08 22:35