클래스: Mongoid::Association::Eager

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/mongoid/association/eager.rb

개요

빠른 로드 사전 로드 함수의 기본 클래스입니다.

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(associations, docs, use_lookup = false, pipeline = []) ⇒ Base

긴급 로드 클래스를 인스턴스화합니다.

예시:

새 항목을 즉시 로드 프리로더에 속합니다.

BelongsTo.new(association, parent_docs)

매개변수:

  • 연관 관계 (Array<Mongoid::Association::Relatable>)

    빠른 로드에 대한 연관 관계

  • 참고자료 (Array<Document>)

    연결을 미리 로드할 문서

  • use_lookup (부울) (기본값은 false)

    Whether to use $lookup aggregation for eager loading. This is used in Criteria#eager_load.

  • 파이프라인 (Array<Hash>) (기본값: [])

    The aggregation pipeline to use when using $lookup for eager loading.



21
22
23
24
25
26
27
# 파일 'lib/mongoid/association/eager.rb', 줄 21

def 초기화(연관 관계, 참고자료, use_lookup = 거짓, 파이프라인 = [])
  @associations = 연관 관계
  @docs = 참고자료
  @grouped_docs = {}
  @use_lookup = use_lookup
  @ 파이프라인 = 파이프라인
end

인스턴스 메서드 세부 정보

#실행배열

프리로더를 실행합니다.

예시:

문서에 연관 관계를 미리 로드합니다.

loader.run

반환합니다:

  • (배열)

    제공된 문서 목록입니다.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 파일 'lib/mongoid/association/eager.rb', 줄 35

def 실행
  @loaded = []

  만약 @use_lookup
    preload_with_lookup
    @loaded = @docs
    반환 @loaded.flatten
  end

  동안 shift_association
    사전 로드
    @loaded << @docs.수집 { |d| d.send(@association.이름) 만약 d.response_to?(@association.이름) }
  end
  @loaded.flatten
end