나는 Gallery
이 has_many
MediaItem
입니다. 각각은 has_one
Video
또는 Photo
입니다. 나는 현재 다음 쿼리를 사용하고열역학적 부하 최적화
:
MediaItem.includes(gallery: {media_items: [:photo, :video]}).featured.rank(:position_in_featured)
그러나 미디어 항목은 이제까지 Video
또는 Photo
있을 것이라는 점을 주어, 나는 항상 '아무튼 중 사용되지 않은 열망 부하 남아 있어요 있다.
이 불필요한 포함을 피하기 위해 더 효율적인 쿼리 방법이 있습니까?
참고 : Polymorphic 연관을 포함하는 솔루션이 필요하지 않습니다. 이 경우 그들은 다른 쿼리에 너무 많은 복잡성을 초래하고 데이터 모델에 적합하지 않습니다.
쿼리에 너무 많은 복잡성을 제공 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Eager+loading+of+associations가 - 나는 표시해야 MediaItem의 정렬 된 목록과 별도의 모델을 가지고 있으면 많은 복잡성이 추가됩니다. MediaItem은 또한 사진이나 비디오와 절대적으로 관련이없는 상당한 양의 데이터를 전달합니다. 나는 모델을 집중시키고 이산 적으로 유지하는 것을 선호한다. – Undistraction
다형성 연관의 열심히로드를 강조해 주셔서 감사합니다. 최근에 변경된 것 같습니다. – Undistraction
Appart에서 다형성 관계를 사용하면 두 모델을 쿼리하여 사용 가능한 일부 레코드가 있는지 알아야하기 때문에 두 가지 쿼리없이이 작업을 수행 할 수 없습니다. –