2017-03-24 2 views
2

Campaign 모델은 has_many Response입니다. 내가하고 싶은 무엇레일은 has_many가 비어 있지 않습니다.

Campaign.where.not(responses.nil?)는 기본적으로 응답이 모든 캠페인의 목록을 반환처럼 검색입니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

당신은 SQL이 같은 Responses으로 만 Campaign 레코드를 반환하기 위해 가입 할 수

답변

2

당신은 join으로 쿼리를 수행 할 수 있습니다 :

Campaign.joins(:responses) 

또는 join이없는 검색어로

Campaign.where(id: Response.pluck(:campaign_id)) 
1

: Campaign.joins(:responses)

그것은 생산할 예정 SQL과 같은 : SELECT campaigns.* FROM campaigns INNER JOIN responses ON responses.campaign_id = campaign.id

관련 문제