Я получаю странный результат запроса activerecord и не могу понять, почему.
parent.children
=> #<ActiveRecord::AssociationRelation[#<Child id: 1, date: "2018-01-01", quantity: 10>]>
parent.children.size
=> 1
parent.children.group(:date).count
=> {Mon, 01 Jan 2018=>1}
parent.children.group(:date).sum(:quantity)
=> {Mon, 01 Jan 2018=>20}
Что может заставить sum
вернуть 20
?
Как видите, существует только одна запись, и суммируемое значение равно 10
.sum
должен вернуть 10
.
На самом деле, вызов модели Child напрямую возвращает правильный результат.
Child(:date).sum(:quantity)
=> {Mon, 01 Jan 2018=>10}
Еще более запутанным является то, что этот конкретный метод вызывает озабоченность у нескольких моделей.В другом месте он рассчитывает правильную сумму.Только одна модель возвращает этот странный результат.
Почесывая голову, как отлаживать это, на самом деле, кажется, нет смысла.Как sum
может вернуть значение больше ожидаемого?