2017-12-15 4 views
0

이런 식으로 작업 할 수 있기를 바랍니다. boat.classifications은 일반적으로 연관된 분류 배열을 반환합니다.has_many 연관 배열 크기가 집합 번호와 일치하는 모든 인스턴스 찾기

Boat.where(classifications.size == 3)

나는이 작업을 수행 할 수 있습니다,하지만 난 그것에 대해 허용하지 않습니다 그것과 아래의 코드를 .pluck를 호출 할 수 싶습니다.

Boat.all.select do |boat| 
    boat.classifications.length == 3 
end 
+0

정확히 달성하기를 원하십니까? '분류 '길이가 더 적거나 컸을 때'보트'를 얻으려면? –

+0

분류 배열의 길이가 3 인 모든 보트를 찾고 싶습니다. –

답변

2
사용 GROUP + HAVING

:

count = 3 
Boat 
    .joins(:classifications) 
    .group(:id) 
    .having('count(boats.id) = ?', count) 

그리고 당신은 pluck 함께 체인하거나 필요 뭐든간에.