代码之家  ›  专栏  ›  技术社区  ›  mwilliams

轨道时间比较故障

  •  1
  • mwilliams  · 技术社区  · 16 年前

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

    我也对这个单元进行了测试,测试通过了,但是在实现方面,它似乎不起作用。

    我的逻辑是正确的还是会有更好的方法来实现这一点?

    1 回复  |  直到 16 年前
        1
  •  7
  •   Alex Wayne    16 年前
    if last_updated < 15.minutes.ago
    

    minutes方法返回一个我相信的整数,减去time对象会得到另一个time对象。所以你的表达式把一个int和一个时间做了一些你不期望的事情。

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


    而且,从来没有做过 if (something) return true; else; return false 红宝石。您的方法将返回在其中执行的最后一个表达式的值,因此您可以大大简化整个方法:

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

    读起来容易吗?