Activerecord总和计算

时间:2011-10-25 19:39:12

标签: ruby-on-rails activerecord

请帮帮我。我有一些在线和离线字段的表=>当人上线和离线时。如果此人仍在线,则离线字段等于NULL,并且仅在人员离线后才会更新。

我需要计算人员的持续时间,但是使用sql。 我有两个范围:

scope :since, lambda { |date| where(["online >= ?", date.to_time.midnight]) }
scope :upto, lambda { |date| where(["online <= ?", date.to_time.end_of_day]) }

帮助我过滤人物记录。 如何在应用所需范围后正确计算持续时间? (或其他一些陈述)。 在activerecord中是否存在类似IF NULL的内容,如果它确实存在,我该如何使用它呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以再次使用sum功能。

Model.where(...condition....).sum("IFNULL(offline, CURRENT_TIMESTAMP)-online")

我认为在范围内你可以简单地添加我在本例中使用的总和方法