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/

相关文章:

php - 如何更好地在 MySQL 表中使用 PHP 代码前缀?

php - 错误代码 : 1054. 'FabricName' 中的未知列 'field list'

ruby-on-rails - 使用 Rails、Paperclip 和 Backbone 上传文件

c - 如何在没有段错误的情况下从通过 rb_load_protect 加载的脚本中调用退出

Python MySQLdb 占位符语法

android - 我现在可以使用 Firebase 吗?

ruby-on-rails - 需要 Ruby 和 Rails 编码标准的建议

ruby-on-rails - 使用正则表达式和转义进行 MongoID 查询

ruby - 获取 Padrino 辅助方法的 NoMethodError

ruby-on-rails - 在 Windows 10 上安装 Rails 时出错