我手头有一个非常简单的任务。如果上次更新记录的时间超过 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/