У меня проблема с запутанностью. Вот он:Сумма возвращает значение, когда должно возвращаться 0
[12] pry(EstimatedTime)> EstimatedTime.where(user_id: User.current.id, plan_on: date).pluck(:hours) => []
[13] pry(EstimatedTime)> EstimatedTime.where(user_id: User.current.id, plan_on: date).sum(:hours) => 3.0
Что это за магия?
Это утверждение находится в методе модели, который вызывается из представления. До этого, в действии контроллера, я вызываю другой метод той же модели, который выполняет массовое создание записей в транзакции.
def self.save_all(records)
transaction do
records.each do |record|
record.save!
end
end
rescue ActiveRecord::RecordInvalid
return false
end
Исключение составляет бросок, метод возвращает false, визуализируется представление, и это происходит.
UPD Я нашел обходной путь, заменив .sum
с .pluck(:hours).sum
, но я до сих пор понятия не имею, почему мой первый способ сделать это не удается.
Что вы получаете, если вы делаете «EstimatedTime.where (user_id: User.current.id, plan_on: date) .map {| et | et.hours} '? –
@MaxWilliams Я получаю пустой массив. – Roman
Что такое SQL-запросы? –