Я думаю, что в таком положении было бы самым простым решением сделать два запроса. Один, за исключением наборов данных, где офлайн, равен NULL, и один, где только эти данные захватываются. Затем вы можете использовать переменную CURRENT_TIMESTAMP (она всегда содержит временную карту для фактического времени) MySQL следующим образом:
Model.where("offline IS NULL").sum("CURRENT_TIMESTAMP-online")
тогда вы можете добавить результат первого и второго запроса. Возможно, из этого сделана функция метода:
def self.your_method_name_here
secounds=0
secounds+=Model.where("offline IS NOT NULL").sum("offline-online").to_i
secounds+=Model.where("ofline IS NULL").sum("CURRENT_TIMESTAMP-online").to_i
secounds
end
Возможно сделать это за один запрос, но я думаю, что это практически выполнимо!