这会返回我想要的记录,但不会像我期望的那样返回大小/计数/长度?

时间:2012-11-18 03:43:31

标签: ruby-on-rails-3 activerecord scope arel

我的模型上有以下范围。我创建了它,所以我可以获得一个父对象列表,这些父对象的子节点与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
...

1 个答案:

答案 0 :(得分:0)

group位是添加count时导致结果的原因。 Rails正在做一些魔术并将size转换为count。如果您不介意返回所有结果,则可以附加.all.size并应该执行此操作。或者删除group位并添加.distinct('parent_id').count