두 테이블을 조인하고 모델과 관련된 모든 열을 반환하려고합니다.레일 3 조인에서 모든 열 반환
Comment.joins(:user).select("*")
는 SQL은 잘 보이지만, 여전히, 그것은 단지 의견과 그와 관련된 사용자 정보의 없음을 반환
나는 그런 일이 다음과 같습니다있다.
comments.*
이 아닌 *
을 어떻게 검색 할 수 있습니까?
두 테이블을 조인하고 모델과 관련된 모든 열을 반환하려고합니다.레일 3 조인에서 모든 열 반환
Comment.joins(:user).select("*")
는 SQL은 잘 보이지만, 여전히, 그것은 단지 의견과 그와 관련된 사용자 정보의 없음을 반환
나는 그런 일이 다음과 같습니다있다.
comments.*
이 아닌 *
을 어떻게 검색 할 수 있습니까?
무엇
comments = Comment.includes(:user).all
이제
comments
당신이 루프를해야합니다 그래서 모든 사용자가 볼을 통해 배열 될 것이다.
#won't work
comments.user
#should work
comments[0].user
comments.each do |comment|
puts comment.user.name #or whatever
end
이 작동합니다 windows, 나는 콘솔 출력은 반영/루트 수준의 개체를 반환합니다 검사합니다.
위 코드를 실행 한 실험을 방금했습니다. 터미널 출력은 주석을 가져 왔지만 연관된 사용자는 언급하지 않았 음을 기록했습니다. 다음으로 데이터베이스를 종료하여 데이터베이스에 대해 두 번째 쿼리를 실행할 수 없도록 한 다음 관련 사용자를 묻습니다.
comments.user
에는 데이터베이스 연결이 시도되지 않았기 때문에 이미 열심히,로드 된 것을 증명 콘솔 출력 사용자.
흥미 롭습니다. 나는 똑같은 것을 궁금해하고 있었다. 질의를 캐싱해도 혼동을 줄 수 있지만'comments.user'를 실행할 때 질의가 실행되는지 여부를 알 수 있습니다. – wuliwong
Ryan Bates는이 주제에 대한 훌륭한 자습서를 가지고 있습니다.
http://railscasts.com/episodes/22-eager-loading-revised?autoplay=true
여전히 사용자 정보를 표시 할 수 없습니다. Mishka 's로 가서 이걸 도와주세요.) – Dex
Nice Davis reference. – rwilliams
나는 너무 길어졌다.). 이 작동합니다. 모든 것이 열심히로드되고 있는지 확인하고 싶었습니다. – Dex