2014-11-10 4 views
0

내에서 모델을로드 나는 다음이 (: object_b) 것이다 열망 부하 ObjectB 분명히. 하지만 호출 할 때마다 새 쿼리를 발행 할 필요없이 전체 계층을 열심히로드하려고합니다. object_a.object_b.object_c레일 4 열망 모델

아이디어가 필요하십니까? 당신이

ObjectA.includes(object_b: :object_c).where(...) 

뭔가를 할 경우

답변

1

이 열망로드 ObjectA 's은 (는) ObjectBwhere(...) 조건에 일치하는 각 ObjectA에 대한 중첩 된 ObjectC 관련됩니다.

열렬한로드를 원할 때마다 위 쿼리 형식이 중복되지 않도록하려면 ObjectA에 클래스 메서드를 만들 수 있습니다.

class ObjectA < ActiveRecord::Base 
    has_one :object_b 

    def self.with_related(conditions) 
    includes(object_b: :object_c).where(conditions) 
    end 
end 

참조 : Eager Loading of Associations