2011-10-25 175 views
0

請幫助我。我有一些在線和離線字段=>當人上線和離線時。如果用戶仍在線,則離線字段等於NULL,並且只有在用戶離線後纔會更新。Activerecord總和計算

而且我需要計算人員的時間長短,但使用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

您可以再次使用sum函數。

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

而且我認爲一個範圍,你可以簡單地添加總和方法我在這個例子中

+0

使用我更換CURRENT_TIMESTAMP以「#{} Time.current.utc」,它工作正常。謝謝! – ValeriiVasin