모듈: Mongoid::Association::EagerLoadable
- 다음에 정의됨:
- lib/mongoid/association/eager_loadable.rb
개요
이 모듈은 기준에 대한 선행 로딩 동작을 정의합니다.
인스턴스 메서드 요약 접기
-
#Huge_load(Docs) ⇒ Array<Mongoid::Document>
지정된 문서에 대한 연관 관계를 로드합니다.
-
#Huge_loadable? ⇒ true | false
기준에 즉시 로드해야 하는 연관 포함이 있는지 여부를 나타냅니다.
-
#사전 로드(associations, Docs) ⇒ 객체
지정된 문서에 대한 연관 관계를 로드합니다.
인스턴스 메서드 세부 정보
#Huge_load(Docs) ⇒ Array<Mongoid::Document>
지정된 문서에 대한 연관 관계를 로드합니다.
25 26 27 28 29 30 31 |
# 파일 'lib/mongoid/association/eager_loadable.rb', 줄 25 def Eager_load(참고자료) 참고자료.탭 do |d| 만약 Eager_loadable? 사전 로드(기준.포함, d) end end end |
#Huge_loadable? ⇒ true | false
기준에 즉시 로드해야 하는 연관 포함이 있는지 여부를 나타냅니다.
16 17 18 |
# 파일 'lib/mongoid/association/eager_loadable.rb', 줄 16 def Eager_loadable? !기준.포함.비어 있나요? end |
#사전 로드(associations, Docs) ⇒ 객체
지정된 문서에 대한 연관 관계를 로드합니다. 이 작업은 재귀적으로 수행되어 지정된 문서의 관련 문서와의 연관 관계를 로드합니다.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 파일 'lib/mongoid/association/eager_loadable.rb', 줄 40 def 사전 로드(연관 관계, 참고자료) assoc_map = 연관 관계.group_by(&:inverse_class_name) docs_map = {} 대기열 = [ class.to_s ] 동안 class = 대기열.shift 만약 방식 = assoc_map.삭제(class) 방식.각 do |assoc| 대기열 << assoc.class_name # 이 클래스가 포함 트리에 중첩된 경우 문서만 로드합니다. # 위의 연관 관계에 대해. 상위 연관 관계가 없는 경우, # 이 메서드에 전달된 문서의 문서를 포함합니다. ds = 참고자료 만약 assoc.parent_inclusions.분량 > 0 ds = assoc.parent_inclusions.map{ |p| docs_map[p].to_a }.flatten end res = assoc.관계.Eager_loader([assoc], ds).실행 docs_map[assoc.이름] ||= [].to_set docs_map[assoc.이름].merge(res) end end end end |