1
동적 조건을 사용하여 열정적 부하를 실행할 수 있습니까? 더 구체적으로 : 오히려 단지 :items
보다 전체 쿼리에 where
조건을 적용하지만, 달성 할 수있는 방법이 있으므로역동적 인 조건을 가진 열렬한 부하
u_id = params[:user_id]
Container.includes(:items).where("items.user_id =?", u_id)
이것은 분명히 나에게 어떤 user_id
의 항목 그러나 모든 컨테이너를 제공하지 않습니다 이것은 ARel을 사용하거나 사용자 정의 SQL 쿼리가 필요합니까?
이렇게하면 범위를 더 잘 이해할 수 있습니다. 지금 쿼리는 항목이 포함 된 컨테이너 만 반환합니다. 특정 사용자에 대한 열망있는로드 항목을 사용할 수 있으며 모든 항목을 포함하지 않더라도 모든 컨테이너를 가져올 수 있습니까? – Stefan
컨테이너에 user_id가 있다면 비교적 쉽습니다. Container.where ("user_id =?", params [: user.id]) .include (: items) .scoped' 이것은 주어진 사용자에 대한 모든 컨테이너를 선택한 다음 선택한 컨테이너와 관련된 항목을 포함합니다. 컨테이너에'user_id'가 없으면 내 머리 꼭대기에 대답이 없습니다. 내가 더 이상 찾을 것이 있으면 나는 그것을 게시 할 것이다. – nmott
도움에 감사드립니다. 나는 디자인을 수정하려고 노력할 것입니다. 아마도 그것은 저의 어려움을 일으키는 원인 일 것입니다. 현재 모든 '사용자'는 모든 컨테이너를 가져올 수 있지만 컨테이너의 '항목'만 가져올 수 있습니다. 보기에서 약간의 논리로 작업 할 수 있지만 N + 1 쿼리 문제가 발생합니다. – Stefan