모델 X has_many Ys 및 모델 Y belongs_to X가 있다고 가정합니다. 각 Y에는 데이터베이스에 삽입 된 날짜가 있습니다. 이제 모든 X와 열의 부하를 마지막 Y로로드 할 수 있습니까? 각 X에는 Y의 bazzilions가 있기 때문에 마지막 X 만로드 할 수 있습니까?Eager 마지막 하위 레코드로드 중
이has_one :last_vote, :class_name => 'Vote', :order => 'created_at DESC'
이 새로운 연관이 항상 곡에 가장 최근에 생성 된 응답을 반환합니다
해당 쿼리에서 생성 된 조인을 보는 것은 흥미로울 것입니다. :) 조금 비정규 화하고 Song에 필드를 추가하는 것이 가장 좋습니다. last_vote_id는 새 투표가 추가 될 때마다 업데이트됩니다. 그냥 : include => : last_vote 이후에, 불필요한 데이터로드 (또는 스마트 인 경우 GROUP BY)가 필요하지 않습니다. – vladr
사실, 위의 코드는 완전히 테스트되지 않았습니다. 블라드, 당신의 솔루션은 내 것보다 개선 된 것처럼 들립니다. – Tilendor
첫 번째 송뿐만 아니라 각 송에 대한 모든 투표를 미리로드합니다. 이것은 SELECT "votes"와 같은 쿼리를 생성합니다. * FROM "votes"WHERE "votes". "song_id"IN (1,2,3,4,5) order by created_at DESC –