我的模型上有以下范围。我创建了它,所以我可以获得一个父对象列表,这些父对象的子节点与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
...
答案 0 :(得分:0)
group
位是添加count
时导致结果的原因。 Rails正在做一些魔术并将size
转换为count
。如果您不介意返回所有结果,则可以附加.all.size
并应该执行此操作。或者删除group
位并添加.distinct('parent_id').count
。