mysql - 在 ruby 中获取时间间隔

标签 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,对这个逻辑有什么帮助吗?

最佳答案

在范围内(您在这里有效地使用),通常期望较低的数字是开始,较高的数字是结束。因此,如果您只是在 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/

相关文章:

ruby - 为什么 Matz 选择在 Ruby 中默认设置可变字符串?

php - 动态生成网页的问题

javascript - 在 RAILS 中的 <body onLoad=function()> 中插入 javascript 调用

ruby - JSON的基于流的解析和写入

ruby-on-rails - 检查 activerecord 是否锁定在 "updating"状态

ruby-on-rails - 使用常规持久性方法通过 mongoid 更新 Rails 模型的属性

ruby-on-rails - Rails 3/谷歌分析 API/Garb

mysql - 处理mysql查询中的空时间

mysql - 我想找到薪水排名第 22 位的人

mysql - 如何使用 mysql 安排事件