클래스: Mongoid::Attributes::Projector Private

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

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 모듈은 프로젝션 헬퍼를 정의합니다.

프로젝션 규칙은 다소 중요하지 않습니다. www.mongodb.com/ko-kr/docs/manual/reference/method/db를 참조하세요. 컬렉션.find/#find-projection 서버 문서의 경우. 4.4 서버 (아마도 모든 이전 서버)에서는 콘텐츠 필드에 대한 프로젝션 이 제외 또는 포함이어야 합니다. 즉, 동일한 쿼리 에서 제외와 포함을 혼합할 수 없습니다. 그러나 콘텐츠 필드를 포함하는 프로젝션 에서는 _id 를 제외할 수 있습니다. 0 및 1 이외의 정수 프로젝션 값은 이 문서를 작성하는 현재 공식적으로 문서화되어 있지 않습니다. DOCSP-15266 를 참조하세요. 4.4 서버 는 점 표기법 외에도 중첩 해시 프로젝션 사양을 허용하는데, 이는 Mongoid가 아직 처리하다 하지 않는다고 가정합니다.

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(프로젝션) ⇒ Projector

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

프로젝터의 새 인스턴스를 반환합니다.

[소스 보기]

24
25
26
27
28
29
30
31
32
33
# 파일 'lib/mongoid/attributes/projector.rb', 줄 24

def 초기화(프로젝션)
  만약 프로젝션
    @content_projection = 프로젝션.dup
    @content_projection.삭제('_id')
    @id_projection_value = 프로젝션['_id']
  other
    @content_projection = nil
    @id_projection_value = nil
  end
end

인스턴스 속성 세부 정보

#Content_projection객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.


36
37
38
# 파일 'lib/mongoid/attributes/projector.rb', 줄 36

def Content_projection
  @content_projection
end

#id_projection_value객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.


35
36
37
# 파일 'lib/mongoid/attributes/projector.rb', 줄 35

def id_projection_value
  @id_projection_value
end

인스턴스 메서드 세부 정보

#attribute_or_path_allowed?(name) ⇒ true | false

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

지정된 속성 또는 점 표기법 경로가 구성된 프로젝션(있는 경우)에서 허용되는지 확인합니다.

구성된 프로젝션 이 없으면 true를 반환합니다.

매개변수:

  • 이름 (string)

    속성의 이름 또는 점 표기법 경로입니다.

반환합니다:

  • (true | false)

    프로젝션 에서 속성을 허용하는지 여부입니다.

[소스 보기]

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 파일 'lib/mongoid/attributes/projector.rb', 줄 48

def attribute_or_path_allowed?(이름)
  # _id 에 대한 특수 처리.
  만약 이름 == '_id'
    결과 = 하지 않는 한 id_projection_value.nil?
      value_inclusionary?(id_projection_value)
    other
      true
    end
    반환 결과
  end

  만약 Content_projection.nil?
    # 프로젝션 이 없습니다 ( 빈 프로젝션 과 반대).
    # 모든 속성이 허용됩니다.
    반환 true
  end

  # 요청된 이름/경로와 일치하거나 상위 항목인 항목을 찾습니다.
  # 이는 예를 예시 프로젝션 이 다음과 같은 경우를 처리합니다.
  # {foo: true}이고 foo.bar가 허용되는지 알고 싶습니다.
  item, value = Content_projection.감지 do |경로, value|
    (이름 + '.').start_with?(경로 + '.')
  end
  만약 item
    반환 value_inclusionary?(value)
  end

  만약 Content_inclusionary?
    # 요청된 이름/경로의 엄격한 하위 항목을 찾습니다.
    # 이는 예를 예시 프로젝션 이 다음과 같은 경우를 처리합니다.
    # {"foo.bar" => true}이고 foo가 허용되는지 알고 싶습니다.
    # (바의 컨테이너 와 같습니다.)
    item, value = Content_projection.감지 do |경로, value|
      (경로 + '.').start_with?(이름 + '.')
    end
    만약 item
      반환 true
    end
  end

  !Content_inclusionary?
end