我从活动记录查询中得到一个奇怪的结果,但我不知道为什么。
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
如何返回大于预期的值?