Rails 的时间比较问题
我手头有一个非常简单的任务。 如果上次更新记录的时间超过 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
我也测试了这个单元,这些单元都通过了,但是当涉及到实现时,它似乎不起作用。
我的逻辑是否正确或者是否有更好的方法来实现这一目标?
I have a very simple task at hand. If the last time a record was updated has been longer than 15 minutes, display a button. Otherwise, don't display the button.
The field is a datetime.
My view code:
<% if @object.display_button? -%>
my button
<% end -%>
My display button method on that object:
def display_button?
return false if last_updated.nil?
if Time.now - last_updated > 15.minutes
true
else
false
end
end
I also have this unit tested, which are passing, but when it comes to the implementation, it doesn't seem to work.
Is my logic correct or would there be a better way of accomplishing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
分钟方法返回一个整数,我相信,减去时间对象会产生另一个时间对象。 所以你的表达式将 int 与时间进行比较,并做了一些你不期望的事情。
15.minutes.ago
生成一个可以直接与另一个时间对象进行比较的时间对象。另外,永远不要做
if (something) return true; 别的; 在 ruby 中返回 false。 您的方法将返回其中执行的最后一个表达式的值,因此您可以极大地简化整个方法:
这不是更容易阅读吗?
The minutes method returns an integer I believe, and subtracting time object yields another time object. So your expression compares an int to a time and does something that you dont expect.
15.minutes.ago
yields a time object that can be directly compared to another time object.Also, never ever do
if (something) return true; else; return false
in ruby. Your method will return the value of that last expression executed in it, so you can vastly simplify that entire method:Isn't that easier to read?