是什么会导致ActiveRecord总和返回错误的值?

时间:2018-11-15 09:52:40

标签: ruby-on-rails 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

如您所见,只有一条记录,并且求和的值为10sum应该返回10

实际上,直接调用Child模型将返回正确的结果。

Child(:date).sum(:quantity)
=> {Mon, 01 Jan 2018=>10}

更令人困惑的是,这种特殊方法在多个模型之间共享。在其他地方,它会计算正确的总和。只有一个模型返回这个奇怪的结果。

抓紧时间调试一下,这似乎没有任何意义。 sum如何返回大于预期的值?

0 个答案:

没有答案