1
ActiveRecord에서 .where를 사용하여 .map 스타일 질의
모든 항목의 회사 수를 보려면 다음과 같이 작성할 수 있습니다.
@counts = Item.all.collect{|i| i.companies.count}
.where
과 유사한 작업을 수행하여 count > 0
을 가진 항목 만 반환 할 수 있습니까?
ActiveRecord에서 .where를 사용하여 .map 스타일 질의
모든 항목의 회사 수를 보려면 다음과 같이 작성할 수 있습니다.
@counts = Item.all.collect{|i| i.companies.count}
.where
과 유사한 작업을 수행하여 count > 0
을 가진 항목 만 반환 할 수 있습니까?
그것을 할 수있는 가장 효과적인 방법은 예를 들어, 서브 쿼리를하고, 다른 방법이 있습니다
class Item
# items must have a column named companies_count
has_many :companies, :counter_cache => true
scope :with_companies, where('companies_count>0')
end
항목에 카운터 캐시 열을 추가하거나 & 그룹에 & 수를 가입하는 것입니다.
중요한 것은 where
에 쓰는 모든 것이 데이터베이스에서 실행되므로 SQL이 할 수있는 것만 가능하다는 것입니다.