쿼리 구문을 가져 오는 데 문제가 있습니다.활성 레코드 포함 위치 포함
블로그에 '카테고리'와 같은 기능을하는 채널이 있습니다. 나에게는 게시물과 같은 프로그램이 있습니다. 쇼에는 '승인 됨'이라는 부울이 있으므로 true 또는 false입니다. 채널에는 또한 위치가 있습니다 .. 채널에는 많은 프로그램이 있습니다.
내가 승인 한 쇼만으로 위치 순서대로 모든 채널을 얻으려면 어떻게해야합니까?
나는이 시도 :Channel.includes(:shows).order('channels.position')
을하고 올바른 위치에 나에게 채널을 가져오고 이미
channel.shows
을 할 수 있지만, 그것은 여부에 관계없이
show.approved=true
의 해당 채널에 할당 된 모든 프로그램을 얻고있다.
Channel.includes(:shows).order('channels.position')
은 쇼가 승인되었는지 여부에 관계없이 모든 채널과 쇼를 반환합니다.
Channel.includes(:shows).where(shows:{approved: true}).order('channels.position')
은 승인 된 콘텐츠가없는 채널은 건너 뛰고 승인 된 채널 만 반환합니다. 하지만 쇼의 상태와 관계없이 반환 할 채널이 필요하지만 쇼는 빈 배열이어야합니다.
당신은 외부 조인을 사용해야합니다. 이 SO 링크를 확인하십시오 : http://stackoverflow.com/questions/1509692/rails-activerecord-joins-with-left-join-instead-of-inner-join – mcfinnigan
이렇게 하시겠습니까? '채널 .includes (: shows) .where (: shows => []). 주문 ('channels.position')' – depa