2012-11-18 3 views
0

내 모델에 다음 범위가 있습니다. some_id_on_child 값 123과 일치하는 하위 항목이있는 상위 개체 목록을 얻을 수 있도록 만들었습니다. 올바른 레코드를 반환하는 것으로 보입니다. 내가 대신 위의 반환 된 레코드 수를 반환의 수/길이/크기를 요청할 때이것은 원하는 레코드를 반환하지만 예상 한 크기/개수/길이가 아닙니다.

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

그러나, 부모 당 기준과 일치하는 아이의 수를 돌려줍니다.

Parent.light.size 

I 출력의 종류와 끝까지 ..

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

답변

0

group 비트는 count를 추가 할 때 결과를 일으키는 것입니다. 레일스는 마술을하고 있으며 sizecount으로 변환하고 있습니다. 모든 결과를 반환하는 것을 꺼리는 경우 .all.size을 추가 할 수 있습니다. 또는 group 비트를 삭제하고 .distinct('parent_id').count을 추가하십시오.