클래스: Mongoid::Association::Referenced::HasMany::Enumerable
- 상속:
-
객체
- 객체
- Mongoid::Association::Referenced::HasMany::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을 전송합니다.
-
#avg(필드) ⇒ Float | nil
열거형의 모든 문서에 대해 제공된 필드 의 평균을 가져옵니다.
-
#clear(&block) ⇒ 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하는 데 필요한 데이터를 로드합니다.
-
#max(field = nil) ⇒ Numeric | nil
열거형의 모든 문서에 대해 제공된 필드 의 최대값을 가져옵니다.
-
#min(field = nil) ⇒ Numeric | nil
열거형의 모든 문서에 대해 제공된 필드 의 최소값을 가져옵니다.
-
#puck(*keys) ⇒ 배열 | Array<Array>
대상의 문서에서 지정된 필드 이름을 가져옵니다.
-
#reset ⇒ false
열거형을 지속형 상태 로 재설정합니다.
-
#reset_unloaded(기준) ⇒ 객체
언로드된 기본 기준 객체를 새 기준 객체로 재설정합니다.
-
#respond_to?(name, include_private = false) ⇒ true | false
이 열거형이 제공된 메서드에 응답하나요?
-
#size ⇒ 정수 (동의어: #Length)
이 열거형의 총 크기를 가져옵니다.
-
#합계(필드 = nil) ⇒ 숫자
열거형의 모든 문서에 대해 제공된 필드 의 합계를 가져옵니다.
-
#to_json(options = {}) ⇒ string
항목에 #to_json을 전송합니다.
-
#uniq ⇒ Array<Document>
열거형의 모든 고유 문서를 반환합니다.
생성자 세부 정보
#initialize(target, base = nil, association = nil) ⇒ Enumerable
기준 또는 배열을 사용하여 새 열거형을 초기화합니다.
260 261 262 263 264 265 266 267 268 269 270 271 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 260 def 초기화(대상, base = nil, 연관 관계 = nil) @_base = base @_association = 연관 관계 만약 대상.is_a?(기준) @_added, @executed, @_loaded, @_unloaded = {}, 거짓, {}, 대상 other @_added, @executed = {}, true @_loaded = 대상.each_with_object({}) do |doc, _target| _target[doc._id] = doc 만약 doc end end end |
인스턴스 속성 세부 정보
#_added ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 23 24 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 def _added @_added end |
#_added 추가된 문서입니다.(추가된 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 attr_accessor :_added, :_loaded, :_unloaded |
#_loaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 23 24 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 def _loaded @_loaded end |
#_loaded _loaded된 지속된 문서입니다.(로드된 문서의 영구 문서) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 attr_accessor :_added, :_loaded, :_unloaded |
#_unloaded ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 23 24 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 def _unloaded @_unloaded end |
#_unloaded 지속형 Docs 를 나타내는 기준입니다.(AcriteriareRepresentingpersisteddocs.) ⇒ 객체
세 가지 주요 인스턴스 변수는 문서 컬렉션입니다.
22 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 22 attr_accessor :_added, :_loaded, :_unloaded |
인스턴스 메서드 세부 정보
#<<(문서) ⇒ Document 또한 다음과 같이 알려져 있습니다: push
열거형에 문서 를 추가합니다.
63 64 65 66 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 63 def <<(문서) _added[문서._id] = 문서 self end |
#==(기타) ⇒ true | false
열거형이 다른 객체와 같은지 확인합니다.
34 35 36 37 38 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 34 def ==(기타) 반환 거짓 하지 않는 한 기타.response_to?(:entries) 항목 == 기타.항목 end |
#===(기타) ⇒ true | false
case 문에 대해 제공된 객체 를 기준으로 열거형이 동일한지 확인합니다.
49 50 51 52 53 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 49 def ===(기타) 반환 거짓 하지 않는 한 기타.response_to?(:entries) 항목 === 기타.항목 end |
#_loaded? ⇒ true | false
열거형이 _load되었나요? 기준이 실행되었거나 전체 항목을 수동으로 로드한 경우에도 마찬가지입니다.
351 352 353 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 351 def _loaded? !!@executed end |
#any?(*args) ⇒ true | false
연관 관계에 선택적으로 제공된 필터의 적용을 받는 문서가 있는지 여부를 반환합니다.
이 메서드는 연관 관계에 지속형 문서가 있고 아직 지속되지 않은 문서가 있는 경우 true를 반환합니다.
연결이 이미 로드된 경우 이 메서드는 로드된 문서를 검사하고 데이터베이스 를 쿼리 하지 않습니다. 연관 관계가 로드되지 않은 경우, 인수가 없는 및 차단이 없는 버전은 연관 관계를 로드하지 않습니다. Enumerable에 위임된 다른 버전은 연결이 완료될 때까지 반복되는지 여부에 따라 연결을 완전히 로드할 수도 있고 그렇지 않을 수도 있습니다.
이 메서드는 매개변수와 차단 을 사용할 수 있습니다. 매개 변수 또는 차단 이 있는 동작은 표준 라이브러리 열거형 모듈에 위임됩니다.
Enumerable의 any? 메서드가 차단 과 패턴 모두 사용하여 호출되는 경우에는 패턴 만 사용합니다.
223 224 225 226 227 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 223 def 어떤?(*args) 반환 super 만약 args.어떤? || block_given? !비어 있나요? end |
#as_json(options = {}) ⇒ 해시
인코딩 없이 항목에 #as_json을 전송합니다.
504 505 506 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 504 def as_json( = {}) 항목.as_json() end |
#avg(필드) ⇒ Float | nil
열거형의 모든 문서에 대해 제공된 필드 의 평균을 가져옵니다. 연결이 로드되면 데이터베이스 쿼리하지 않고 메모리에서 계산합니다.
534 535 536 537 538 539 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 534 def 평균(필드) values = field_values_for(필드) 반환 nil 만약 values.비어 있나요? values.합계 / values.size.to_f end |
#clear(&block) ⇒ Array
이 열거형의 모든 문서를 지웁니다. 차단 을 전달하면 메모리에 있는 각 문서 에 양보합니다.
82 83 84 85 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 82 def 지우기(&차단) in_memory(&차단) 만약 block_given? _loaded.지우기 개인정보 정책에 _added.지우기 end |
#clone ⇒ Array<Document>
이렇게 하면 모든 문서가 메모리에 로드됩니다.
열거형의 각 문서 를 복제합니다.
95 96 97 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 95 def 복제 수집 { |doc| doc.복제 } end |
#delete(document) {|doc| ... } ⇒ Document
열거형에서 제공된 문서 를 삭제합니다.
107 108 109 110 111 112 113 114 115 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 107 def 삭제(문서) doc = _loaded.삭제(문서._id) || _added.삭제(문서._id) 만약 !doc && _unloaded && _unloaded.위치(_id: 문서._id).존재합니까? yield(문서) 만약 block_given? 반환 문서 end yield(doc) 만약 block_given? doc end |
#delete_if(&block) ⇒ Array<Document>
이 작업은 데이터베이스 에서 모든 문서를 로드합니다.
차단 이 true를 반환하는 열거형의 모든 문서 를 삭제합니다.
128 129 130 131 132 133 134 135 136 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 128 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 를 포함하는 열거자를 반환합니다.
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 161 def 각 반환 to_enum 하지 않는 한 block_given? 만약 _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인지 결정합니다.
191 192 193 194 195 196 197 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 191 def 비어 있나요? 만약 _loaded? in_memory.비어 있나요? other _added.비어 있나요? && !_unloaded.존재합니까? end end |
#first(limit = nil) ⇒ Document
기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하는 경우 대신 #take를 사용하세요. #take 는 순서를 보장하지 않는다는 점에 유의하세요.
열거형의 첫 번째 문서 를 가져옵니다. 먼저 저장된 문서를 확인합니다. 열거형 전체를 로드하지 않습니다.
244 245 246 247 248 249 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 244 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된 모든 문서를 반환합니다.
307 308 309 310 311 312 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 307 def in_memory 참고자료 = (_loaded.values + _added.values) 참고자료.각 do |doc| yield(doc) 만약 block_given? end end |
#include?(doc) ⇒ true | false
대상에 제공된 문서 가 포함되어 있나요?
281 282 283 284 285 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 281 def 포함?(doc) 반환 super 하지 않는 한 _unloaded _unloaded.위치(_id: doc._id).존재합니까? || _added.has_key?(doc._id) end |
#검사 ⇒ string
검사는 좋은 배열 스타일의 인쇄를 위해 항목을 검사합니다.
294 295 296 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 294 def 검사 항목.검사 end |
#last(limit = nil) ⇒ Document
기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하는 경우 대신 #take를 사용하세요. #take 는 순서를 보장하지 않는다는 점에 유의하세요.
열거형의 마지막 문서 를 가져옵니다. 먼저 새 문서를 확인합니다. 열거형 전체를 로드하지 않습니다.
329 330 331 332 333 334 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 329 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하는 데 필요한 데이터를 제공합니다.
361 362 363 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 361 def marshal_dump [ _added, _loaded, _unloaded, @executed ] end |
#marshal_load(data) ⇒ Array<Object>
열거 가능한 프록시를 Marshal.load하는 데 필요한 데이터를 로드합니다.
371 372 373 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 371 def marshal_load(데이터) @_added, @_loaded, @_unloaded, @executed = 데이터 end |
#max(field = nil) ⇒ Numeric | nil
열거형의 모든 문서에 대해 제공된 필드 의 최대값을 가져옵니다. 연결이 로드되면 데이터베이스 쿼리하지 않고 메모리에서 계산합니다.
567 568 569 570 571 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 567 def 최대(필드 = nil) 반환 super() 만약 block_given? field_values_for(필드).최대 end |
#min(field = nil) ⇒ Numeric | nil
열거형의 모든 문서에 대해 제공된 필드 의 최소값을 가져옵니다. 연결이 로드되면 데이터베이스 쿼리하지 않고 메모리에서 계산합니다.
551 552 553 554 555 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 551 def min(필드 = nil) 반환 super() 만약 block_given? field_values_for(필드).min end |
#puck(*keys) ⇒ 배열 | Array<Array>
대상의 문서에서 지정된 필드 이름을 가져옵니다. 컬렉션 이 로드된 경우 로드된 문서에서 가져옵니다. 그렇지 않으면 언로드된 기준에서 가져옵니다. 그럼에도 불구하고 추가된 모든 문서에서도 가져옵니다.
384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 384 def 뽑다(*키) [].탭 do |결과| 만약 _loaded? || _added.어떤? class = @_association.class 준비 = prepare_puck(키, document_class: class) end 만약 _loaded? 참고자료 = _loaded.values.map { |v| BSON::문서.신규(v.속성) } 결과.concat puck_from_documents(참고자료, 준비[:field_names], document_class: class) elsif _unloaded 기준 = 만약 _added.어떤? ids_to_exclude = _added.키 _unloaded.not(:_id.인 => ids_to_exclude) other _unloaded end 결과.concat 기준.뽑다(*키) end 만약 _added.어떤? 참고자료 = _added.values.map { |v| BSON::문서.신규(v.속성) } 결과.concat puck_from_documents(참고자료, 준비[:field_names], document_class: class) end end end |
#reset ⇒ false
열거형을 지속형 상태 로 재설정합니다.
418 419 420 421 422 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 418 def 재설정 _loaded.지우기 _added.지우기 @executed = 거짓 end |
#reset_unloaded(기준) ⇒ 객체
언로드된 기본 기준 객체를 새 기준 객체로 재설정합니다. HABTM 연관 관계를 사용하여 기본 배열을 동기화 상태로 유지했습니다.
431 432 433 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 431 def reset_unloaded(기준) @_unloaded = 기준 만약 _unloaded.is_a?(기준) end |
#respond_to?(name, include_private = false) ⇒ true | false
이 열거형이 제공된 메서드에 응답하나요?
445 446 447 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 445 def response_to?(이름, include_private = 거짓) [].response_to?(이름, include_private) || super end |
#크기 ⇒ 정수 ~라고도 함: 길이
이 열거형의 총 크기를 가져옵니다. 이는 모든 영구 문서와 비영구 문서의 조합입니다.
456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 456 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 |
#합계(필드 = nil) ⇒ 숫자
열거형의 모든 문서에 대해 제공된 필드 의 합계를 가져옵니다. 연결이 로드되면 데이터베이스 쿼리하지 않고 메모리에서 계산합니다.
518 519 520 521 522 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 518 def 합계(필드 = nil) 반환 super(필드 || 0) 만약 block_given? field_values_for(필드).합계 || 0 end |
#to_json(options = {}) ⇒ string
항목에 #to_json을 전송합니다.
492 493 494 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 492 def to_json( = {}) 항목.to_json() end |
#uniq ⇒ Array<Document>
이 작업은 데이터베이스 에서 모든 문서를 로드합니다.
열거형의 모든 고유 문서를 반환합니다.
581 582 583 |
# 파일 'lib/mongoid/association/referenced/has_many/enumerable.rb', 줄 581 def uniq 항목.uniq end |