Activerecord дополнительный столбец суммы

#ruby-on-rails #activerecord

#ruby-on-rails #активная запись

Вопрос:

Помогите мне, пожалуйста. Как я могу выбрать сумму времени в секундах к сегодняшнему дню? Например, у меня есть какая-то таблица:

 online | offline | ....
 10:33 | 12:08 | ...
 13:10 | 13:34 | ...
 

И мне нужно получить сумму этих периодов в секундах (или минутах — это не важно).
Спасибо!

Ответ №1:

 def secounds
     (self.offline-self.online).to_i # will give you the time in secounds
end
 

затем вы можете использовать это для блоков

 sum=Integer.new
Model.where(_your conditions_).each do |instance|
     sum =instance.secounds
end
sum # << the secounds of all the data you selected using the weher coondition
 

// Ах, и еще кое-что. Существует неписаный закон, согласно которому вы никогда не создаете столбец для данных, которые вы можете вычислить из других столбцов.

Только в базе данных:

 Model.sum("offline-online")
Model.where("my condition").sum("offline-online") # also with conditions....
 

Комментарии:

1. О, извините, но я имел в виду «Как я могу вычислить это с помощью базы данных», без какого-либо кода ruby. Это важно для приложений с высокой загрузкой