0

我的模型有以下范围。我创建它是为了获得一个父对象列表,这些父对象的子对象与 some_id_on_child 值 123 匹配。这似乎返回了正确的记录。

scope :light, joins(:children).where(children: { some_id_on_child: 123 }).group('parents.id')

但是,当我询问计数/长度/大小而不是返回上面返回的记录数时,它会返回与每个父项匹配的子项数。

Parent.light.size

我最终得到了这种输出..

...
12984 => 5
12398 => 5
12398 => 6
...
4

1 回答 1

0

当您添加时,该group位是导致结果的原因count。Rails 正在做一些魔术并转换sizecount。如果您不介意返回所有结果,您可以追加.all.size并且应该这样做。或删除group位并添加.distinct('parent_id').count.

于 2012-11-18T03:57:36.883 回答