클래스: Mongoid::Association::Referenced::HasMany::Enumerable
- 상속:
-
객체
- 객체
- Mongoid::Association::Referenced::HasMany::Enumerable
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- Enumerable
- 다음에 정의됨:
- lib/mongoid/association/referenced/has_many/enumerable.rb
개요
이 클래스는 _loaded 문서의 기준 또는 배열 이 될 수 있는 대상을 가진 모든 참조된 연관 관계의 래퍼입니다. 이는 두 경우 또는 두 경우의 조합을 처리합니다.
인스턴스 속성 요약 접기
-
#_added ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
-
#_added 추가된 문서입니다.(추가된 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
-
#_loaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
-
#_loaded _loaded된 지속된 문서입니다.(로드된 문서의 영구 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
-
#_unloaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
-
#_unloaded 지속형 Docs 를 나타내는 기준입니다.(AcriteriareRepresentingpersisteddocs.) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
인스턴스 메서드 요약 접기
-
#<<(문서) ⇒ 문서 (동의어: #push)
열거형에 문서 를 추가합니다.
-
#==(기타) ⇒ true | false
열거형이 다른 객체와 같은지 확인합니다.
-
#===(기타) ⇒ true | false
case 문에 대해 제공된 객체 를 기준으로 열거형이 동일한지 확인합니다.
-
#_loaded? ⇒ true | false
열거형이 _load되었나요? 기준이 실행되었거나 전체 항목을 수동으로 로드한 경우에도 마찬가지입니다.
-
#any?(*args) ⇒ true | false
연관 관계에 선택적으로 제공된 필터의 적용을 받는 문서가 있는지 여부를 반환합니다.
-
#as_json(options = {}) ⇒ 해시
인코딩 없이 항목에 #as_json을 전송합니다.
-
#clear ⇒ Array<Document>
이 열거형의 모든 문서를 지웁니다.
-
#clone ⇒ Array<Document>
열거형의 각 문서 를 복제합니다.
-
#delete(document) {|doc| ... } ⇒ Document
열거형에서 제공된 문서 를 삭제합니다.
-
#delete_if(&block) ⇒ Array<Document>
차단 이 true를 반환하는 열거형의 모든 문서 를 삭제합니다.
-
#각각 ⇒ true
이 열거형을 반복하려면 몇 가지 시나리오를 처리해야 합니다.
-
#비어 있나요? ⇒ true | false
열거형이 비어 있나요? 로드 여부에 따라 카운트가 0인지 결정합니다.
-
#first(limit = nil) ⇒ Document
열거형의 첫 번째 문서 를 가져옵니다.
-
#in_memory ⇒ Array<Document>
열거형에서 _loaded 또는 _added된 모든 문서를 반환합니다.
-
#include?(doc) ⇒ true | false
대상에 제공된 문서가 포함되어 있나요?
-
#initialize(target, base = nil, 연관 관계 = nil) ⇒ Enumerable
생성자
기준 또는 배열을 사용하여 새 열거형을 초기화합니다.
-
#검사 ⇒ string
검사는 좋은 배열 스타일의 인쇄를 위해 항목을 검사합니다.
-
#last(limit = nil) ⇒ Document
열거형의 마지막 문서 를 가져옵니다.
-
#marshal_dump ⇒ Array<Object>
열거 가능한 프록시를 Marshal.dump하는 데 필요한 데이터를 제공합니다.
-
#marshal_load(data) ⇒ Array<Object>
열거 가능한 프록시를 Marshal.load하는 데 필요한 데이터를 로드합니다.
-
#reset ⇒ false
열거형을 지속형 상태 로 재설정합니다.
-
#reset_unloaded(기준) ⇒ 객체
언로드된 기본 기준 객체를 새 기준 객체로 재설정합니다.
-
#respond_to?(name, include_private = false) ⇒ true | false
이 열거형이 제공된 메서드에 응답하나요?
-
#size ⇒ 정수 (동의어: #Length)
이 열거형의 총 크기를 가져옵니다.
-
#to_json(options = {}) ⇒ string
항목에 #to_json을 전송합니다.
-
#uniq ⇒ Array<Document>
열거형의 모든 고유 문서를 반환합니다.
생성자 세부 정보
#initialize(target, base = nil, association = nil) ⇒ Enumerable
기준 또는 배열을 사용하여 새 열거형을 초기화합니다.
262 263 264 265 266 267 268 269 270 271 272 273 274 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 262 def 초기화(대상, base = nil, 연관 관계 = nil) @_base = base @_association = 연관 관계 만약 대상.is_a?(기준) @_added, @executed, @_loaded, @_unloaded = {}, 거짓, {}, 대상 other @_added, @executed = {}, true @_loaded = 대상.주입({}) do |_target, doc| _target[doc._id] = doc 만약 doc _target end end end |
인스턴스 속성 세부 정보
#_added ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 22 23 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 def _added @_added end |
#_added 추가된 문서입니다.(추가된 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 attr_accessor :_added, :_loaded, :_unloaded |
#_loaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 22 23 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 def _loaded @_loaded end |
#_loaded _loaded된 지속된 문서입니다.(로드된 문서의 영구 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 attr_accessor :_added, :_loaded, :_unloaded |
#_unloaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 22 23 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 def _unloaded @_unloaded end |
#_unloaded 지속형 Docs 를 나타내는 기준입니다.(AcriteriareRepresentingpersisteddocs.) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
21 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 21 attr_accessor :_added, :_loaded, :_unloaded |
인스턴스 메서드 세부 정보
#<<(문서) ⇒ Document 또한 다음과 같이 알려져 있습니다: push
열거형에 문서 를 추가합니다.
60 61 62 63 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 60 def <<(문서) _added[문서._id] = 문서 self end |
#==(기타) ⇒ true | false
열거형이 다른 객체와 같은지 확인합니다.
33 34 35 36 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 33 def ==(기타) 반환 거짓 하지 않는 한 기타.response_to?(:entries) 항목 == 기타.항목 end |
#===(기타) ⇒ true | false
case 문에 대해 제공된 객체 를 기준으로 열거형이 동일한지 확인합니다.
47 48 49 50 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 47 def ===(기타) 반환 거짓 하지 않는 한 기타.response_to?(:entries) 항목 === 기타.항목 end |
#_loaded? ⇒ true | false
열거형이 _load되었나요? 기준이 실행되었거나 전체 항목을 수동으로 로드한 경우에도 마찬가지입니다.
353 354 355 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 353 def _loaded? !!@executed end |
#any?(*args) ⇒ true | false
연관 관계에 선택적으로 제공된 필터의 적용을 받는 문서가 있는지 여부를 반환합니다.
이 메서드는 연관 관계에 지속형 문서가 있고 아직 지속되지 않은 문서가 있는 경우 true를 반환합니다.
연결이 이미 로드된 경우 이 메서드는 로드된 문서를 검사하고 데이터베이스 를 쿼리 하지 않습니다. 연관 관계가 로드되지 않은 경우, 인수가 없는 및 차단이 없는 버전은 연관 관계를 로드하지 않습니다. Enumerable에 위임된 다른 버전은 연결이 완료될 때까지 반복되는지 여부에 따라 연결을 완전히 로드할 수도 있고 그렇지 않을 수도 있습니다.
이 메서드는 매개변수와 차단 을 사용할 수 있습니다. 매개 변수 또는 차단 이 있는 동작은 표준 라이브러리 열거형 모듈에 위임됩니다.
Enumerable의 any? 메서드가 블록과 패턴을 모두 사용하여 호출되는 경우에는 패턴만 사용합니다.
225 226 227 228 229 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 225 def 어떤?(*args) 반환 super 만약 args.어떤? || block_given? !비어 있나요? end |
#as_json(options = {}) ⇒ 해시
인코딩 없이 항목에 #as_json을 전송합니다.
469 470 471 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 469 def as_json( = {}) 항목.as_json() end |
#clear ⇒ Array<Document>
이 열거형의 모든 문서를 지웁니다. 차단 을 전달하면 메모리에 있는 각 문서 에 양보합니다.
79 80 81 82 83 84 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 79 def 지우기 만약 block_given? in_memory { |doc| yield(doc) } end _loaded.지우기 개인정보 정책에 _added.지우기 end |
#clone ⇒ Array<Document>
이렇게 하면 모든 문서가 메모리에 로드됩니다.
열거형의 각 문서 를 복제합니다.
94 95 96 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 94 def 복제 수집 { |doc| doc.복제 } end |
#delete(document) {|doc| ... } ⇒ Document
열거형에서 제공된 문서 를 삭제합니다.
106 107 108 109 110 111 112 113 114 115 116 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 106 def 삭제(문서) doc = (_loaded.삭제(문서._id) || _added.삭제(문서._id)) 하지 않는 한 doc 만약 _unloaded && _unloaded.위치(_id: 문서._id).존재합니까? yield(문서) 만약 block_given? 반환 문서 end end yield(doc) 만약 block_given? doc end |
#delete_if(&block) ⇒ Array<Document>
이 작업은 데이터베이스 에서 모든 문서를 로드합니다.
차단 이 true를 반환하는 열거형의 모든 문서 를 삭제합니다.
129 130 131 132 133 134 135 136 137 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 129 def delete_if(&차단) load_all! Deleted = in_memory.SELECT(&차단) Deleted.각 do |doc| _loaded.삭제(doc._id) _added.삭제(doc._id) end self end |
#각각 ⇒ true
이 열거형을 반복하려면 몇 가지 시나리오를 처리해야 합니다.
열거형에 메모리에 로드된 기준이 있는 경우 모든 _로드된 Docs 및 모든 _추가된 Docs 에 양보됩니다.
열거형이 기준을 로드하지 않은 경우 문서를 로드하는 동안 커서를 반복한 다음 _added Docs 를 반복합니다.
차단 이 전달되지 않으면 모든 Docs 를 포함하는 열거자를 반환합니다.
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 162 def 각 하지 않는 한 block_given? 반환 to_enum end 만약 _loaded? _loaded.각각의 쌍 do |id, doc| 문서 = _added.삭제(doc._id) || doc set_base(문서) yield(문서) end other unloaded_documents.각 do |doc| 문서 = _added.삭제(doc._id) || _loaded.삭제(doc._id) || doc _loaded[문서._id] = 문서 set_base(문서) yield(문서) end end _added.각각의 쌍 do |id, doc| yield(doc) end @executed = true end |
#비어 있나요? ⇒ true | false
열거형이 비어 있나요? 로드 여부에 따라 카운트가 0인지 결정합니다.
193 194 195 196 197 198 199 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 193 def 비어 있나요? 만약 _loaded? in_memory.비어 있나요? other _added.비어 있나요? && !_unloaded.존재합니까? end end |
#first(limit = nil) ⇒ Document
기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하는 경우 대신 #take를 사용하세요. #take 는 순서를 보장하지 않는다는 점에 유의하세요.
열거형의 첫 번째 문서 를 가져옵니다. 먼저 저장된 문서를 확인합니다. 열거형 전체를 로드하지 않습니다.
246 247 248 249 250 251 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 246 def first(limit = nil) _loaded.try(:values).try(:first) || _added[(ul = _unloaded.try(:first, limit)).try(:_id)] || ul || _added.values.try(:first) end |
#in_memory ⇒ Array<문서>
차단 을 전달하면 각 문서 에 양보됩니다.
열거형에서 _loaded 또는 _added된 모든 문서를 반환합니다.
309 310 311 312 313 314 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 309 def in_memory 참고자료 = (_loaded.values + _added.values) 참고자료.각 do |doc| yield(doc) 만약 block_given? end end |
#include?(doc) ⇒ true | false
대상에 제공된 문서 가 포함되어 있나요?
284 285 286 287 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 284 def 포함?(doc) 반환 super 하지 않는 한 _unloaded _unloaded.위치(_id: doc._id).존재합니까? || _added.has_key?(doc._id) end |
#검사 ⇒ string
검사는 좋은 배열 스타일의 인쇄를 위해 항목을 검사합니다.
296 297 298 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 296 def 검사 항목.검사 end |
#last(limit = nil) ⇒ Document
기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하는 경우 대신 #take를 사용하세요. #take 는 순서를 보장하지 않는다는 점에 유의하세요.
열거형의 마지막 문서 를 가져옵니다. 먼저 새 문서를 확인합니다. 열거형 전체를 로드하지 않습니다.
331 332 333 334 335 336 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 331 def last(limit = nil) _added.values.try(:last) || _loaded.try(:values).try(:last) || _added[(ul = _unloaded.try(:last, limit)).try(:_id)] || ul end |
#marshal_dump ⇒ Array<Object>
열거 가능한 프록시를 Marshal.dump하는 데 필요한 데이터를 제공합니다.
363 364 365 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 363 def marshal_dump [_added, _loaded, _unloaded, @executed] end |
#marshal_load(data) ⇒ Array<Object>
열거 가능한 프록시를 Marshal.load하는 데 필요한 데이터를 로드합니다.
373 374 375 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 373 def marshal_load(데이터) @_added, @_loaded, @_unloaded, @executed = 데이터 end |
#reset ⇒ false
열거형을 지속형 상태 로 재설정합니다.
383 384 385 386 387 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 383 def 재설정 _loaded.지우기 _added.지우기 @executed = 거짓 end |
#reset_unloaded(기준) ⇒ 객체
언로드된 기본 기준 객체를 새 기준 객체로 재설정합니다. HABTM 연관 관계를 사용하여 기본 배열을 동기화 상태로 유지했습니다.
396 397 398 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 396 def reset_unloaded(기준) @_unloaded = 기준 만약 _unloaded.is_a?(기준) end |
#respond_to?(name, include_private = false) ⇒ true | false
이 열거형이 제공된 메서드에 응답하나요?
410 411 412 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 410 def response_to?(이름, include_private = 거짓) [].response_to?(이름, include_private) || super end |
#크기 ⇒ 정수 ~라고도 함: 길이
이 열거형의 총 크기를 가져옵니다. 이는 모든 영구 문서와 비영구 문서의 조합입니다.
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 421 def size # _unloaded가 있으면 문서 설정하다 와 일치합니다. # 이미 지속된 이 연관 관계에 속해 있습니다. # 데이터베이스 에 . 이 문서 설정하다 다음과 같은 경우에 고려해야 합니다. # 다음 항목과 함께 연관 관계의 크기를 계산합니다. 이후 #이 추가되었습니다. 만약 _unloaded 만약 _added.어떤? # _added에는 이미 _unloaded된 레코드가 포함될 수 있습니다. # 일치합니다. 연관 관계에 배열 할당된 경우가 이에 해당합니다. 항목의 #개와 그 중 일부는 이미 연관 관계의 요소였습니다. # # 따라서 _unloaded.count가 모든 요소를 제외하는지 확인해야 합니다. # 이미 _added에 존재합니다. 카운트 = _unloaded.not(:_id.인 => _added.values.map(&:id)).카운트 카운트 + _added.values.카운트 other _unloaded.카운트 end other _loaded.카운트 + _added.카운트 end end |
#to_json(options = {}) ⇒ string
항목에 #to_json을 전송합니다.
457 458 459 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 457 def to_json( = {}) 항목.to_json() end |