ruby-on-rails - Rails 的时间比较问题

标签 ruby-on-rails ruby datetime logic

我手头有一个非常简单的任务。如果上次更新记录的时间超过 15 分钟,则显示一个按钮。否则,不显示按钮。

该字段是日期时间。

我的查看代码:

<% if @object.display_button? -%>
  my button
<% end -%>

我在该对象上的显示按钮方法:

def display_button?
  return false if last_updated.nil?
  if Time.now - last_updated > 15.minutes
    true
  else
    false
  end
end

我也测试了这个单元,通过了,但是当涉及到实现时,它似乎不起作用。

我的逻辑是否正确,或者是否有更好的方法来实现这一点?

最佳答案

if last_updated < 15.minutes.ago

我认为分钟方法返回一个整数,减去时间对象会产生另一个时间对象。所以你的表达式将一个 int 与一个时间进行比较,并做了一些你不期望的事情。

15.minutes.ago 生成一个可以直接与另一个时间对象进行比较的时间对象。


此外,永远不要做 if (something) return true;别的;在 ruby​​ 中返回 false。您的方法将返回在其中执行的最后一个表达式的值,因此您可以大大简化整个方法:

def display_button?
  last_updated && last_updated < 15.minutes.ago
end

这样不是更容易阅读吗?

关于ruby-on-rails - Rails 的时间比较问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582548/

相关文章:

ruby-on-rails - Rails - 创建基于日期的导航的最佳方式/方法

sql - ActiveRecord has_many 通过多态 has_many

c# - 本地时间和服务器时间有区别

java - 解析日期时间字符串在索引 21 上给出错误

ruby-on-rails - Authlogic:如何阻止某些 IP 地址注册?

mysql - 存储/查询二进制序列和使用掩码搜索

mysql - Rails 4 迁移 : Create mysql table with primary key but without auto_increment

ruby-on-rails - 将 rails 3.2.12 应用程序(带引擎)部署到 nginx/passenger 上的 SUB URI 时出现 404 Not Found 错误

ruby-on-rails - 了解 Rails 指南关联示例

javascript - Safari、IE 中的日期问题