我想我在这里有一个大脑冻结,但我无法找到最好的方法来做到这一点......在此先感谢您的帮助。
我的位置表中有一些字段每5分钟由外部脚本更新一次。如果他们的更新时间超过1小时,则会向网站管理员发送一封电子邮件。
获得死亡地点列表相当简单:
scope :not_responding, lambda {
where('last_heartbeat < ?', Time.now - 1.hour )
}
我所坚持的应该是非常简单的....我想要做的就是更改位置名称的样式,如果它没有响应,它就会变红。
%td
- @locations.each do |locations|
= if ('locations.last_heartbeat < ?', Time.now - 1.hour )
red
-else
green
但是这会引发错误(意外的&#39;,&#39;)
有人可以建议如何将其移入我的模型吗?
- 更新 -
我不确定这是一个错误还是什么,但我看到了一些奇怪的结果。
使用下面的答案,我已经添加了这个:
def not_responding?
last_heartbeat < (Time.now - 1.hour)
end
并致电:
- if location.not_responding?
red
- else
green
然而,这给了我一个关于&#39;&lt;&#;未定义。
最后,我必须这样做才能让它发挥作用。一切看起来都很荒谬......
def not_responding
last_heartbeat <=> (Time.now - 1.hour)
end
在视图中:
- if (hotspot.not_responding_two == -1)
red
- else
green
没有意义,因为以下测试没问题:
def test?
Time.now > (Time.now - 1.hour)
end
答案 0 :(得分:6)
可能最简单的方法是:
class Location < ActiveRecord::Base
def not_responding?
last_heartbeat < (Time.now - 1.hour)
end
end
我扔了一个问号,因为这是一个布尔方法。在您看来:
%td
- @locations.each do |location|
-if location.not_responding?
red
-else
green
您需要在location对象上调用一个方法,在这种情况下,您将调用我们刚刚定义的方法,这将返回true或false,具体取决于最后一次心跳的时间。