클래스: Mongoid::Association::Embedded::EmbedsMany::Proxy
개요
embedded_many 연관 관계를 위한 투명한 프록시입니다. 이 클래스의 인스턴스 는 상위 문서 에서 연결 게터 메서드를 호출할 때 반환됩니다. 이 클래스는 Mongoid::Association::Proxy를 상속하고 해당 메서드의 대부분을 연관 관계의 대상, 즉 하위 문서의 배열 로 전달합니다.
네임스페이스 아래에 정의됨
모듈: 클래스 메서드
상수 요약
프록시에서 상속된 상수
인스턴스 속성 요약
프록시에서 상속된 속성
#_association, #_base, #_target
인스턴스 메서드 요약 접기
-
#<<(*args) ⇒ 객체 (동의어: #push)
문서 또는 문서 배열을 연관 관계에 추가합니다.
-
#_remove(문서) ⇒ 객체
비공개
컬렉션 에서 단일 문서 를 제거합니다 *메모리에서만*.
-
#as_document ⇒ Array<Hash>
이 연관 관계를 데이터베이스에서 그것의 표현으로 가져옵니다.
-
#빌드(속성 = {}, 유형 = nil) ⇒ 문서 (동의어: #new)
연관 관계에서 새 문서를 빌드하고 이를 대상에 추가합니다.
-
#clear ⇒ self
연결을 해제합니다.
-
#concat(Docs) ⇒ Array<Document>
문서 배열 을 연관 관계에 추가합니다.
-
#count(*args, &block) ⇒ Integer
실제로 데이터베이스 에 유지된 연관 관계의 문서 수를 반환합니다.
-
#삭제(문서) ⇒ Document | nil (동의어: #delete_one)
제공된 문서를 대상에서 삭제합니다.
-
#delete_all(conditions = {}) ⇒ Integer
콜백을 실행 하지 않고 연관 관계의 모든 문서를 삭제합니다.
-
#delete_if ⇒ EmbedsMany::Proxy | 열거자
제공된 차단 이 true를 반환하는 모든 문서를 삭제합니다.
-
#Destory_all(conditions = {}) ⇒ Integer
콜백을 실행하는 동안 연결에 있는 모든 문서를 삭제합니다.
-
#존재합니까?(id_or_conditions = :none) ⇒ true | false
이 연관 관계의 문서가 데이터베이스에 존재하는지 확인합니다.
-
#find {|Object| ... } ⇒ Document | Array<Document> | nil
여러 가지 방법을 통해 이 연관 관계에서 문서를 찾습니다.
-
#initialize(base, target,association) ⇒ Many
생성자
새 embeddeds_many 연관 관계를 인스턴스화합니다.
-
#팝업(count = nil) ⇒ 문서 | Array<Document> | nil
연결에서 문서를 삭제합니다.
-
#shift(count = nil) ⇒ 문서 | Array<Document> | nil
문서를 연관 관계 밖으로 이동시킵니다.
-
#대체(Docs) ⇒ 다수
관계의 기존 문서를 제공된 대상 문서로 대체합니다.
-
#unscoped ⇒ 기준
이전의 모든 범위 지정이 제거된 연관 관계를 반환합니다.
ClassMethods에 포함된 메서드
explain_loader, embedded?, foreign_key_suffix
Batchable에 포함된 메서드
#batch_clear, #batch_insert, #batch_remove, #batch_replace
Positional에 포함된 메서드
Many에서 상속된 메서드
#공백?, #create, #create!, #find_or_create_by, #find_or_create_by!, #find_or_initialize_by, #nil?, #respond_to?, #scoped, #serializable_hash
프록시에서 상속된 메서드
apply_ordering, #extend_proxys, #klass, #reset_unloaded, #substutable
마셜러블에 포함된 메서드
생성자 세부 정보
#initialize(base, target,association) ⇒ Many
새 embeddeds_many 연관 관계를 인스턴스화합니다.
67 68 69 70 71 72 73 74 75 76 77 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 67 def 초기화(base, 대상, 연관 관계) super do _target.each_with_index do |doc, index| 통합(doc) doc._index = index end update_attributes_hash @_unscoped = _target.dup @_target = 범위(_target) end end |
동적 메서드 처리
이 클래스는 메서드 누락 메서드를 통해 동적 메서드를 처리합니다.
#메서드 누락 ⇒ 기준 | 객체 (비공개)
대상 배열이 제공된 메서드에 응답하지 않으면 클래스에서 명명된 범위 또는 기준을 찾아 해당 위치로 호출을 보냅니다.
메서드가 배열에 존재하는 경우 기본 프록시 동작을 사용합니다.
TODO: respond_to_missing을 구성하여 사용하고 있는지 확인합니다.
anywhere we define method_missing.
Rubocop:Stylish/MissingRespondToMissing 비활성화
490 491 492 493 494 495 496 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 490 ruby2_keywords def Method_missing(이름, *args, &차단) 반환 super 만약 _target.response_to?(이름) class.send(:with_scope, 기준) do 기준.public_send(이름, *args, &차단) end end |
인스턴스 메서드 세부 정보
#<<(*args) ⇒ 객체 push
문서 또는 문서 배열을 연관 관계에 추가합니다. 프로세스에서 상위 항목을 설정하고 인덱스를 업데이트합니다.
89 90 91 92 93 94 95 96 97 98 99 100 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 89 def <<(*args) 참고자료 = args.flatten 반환 하지 않는 한 참고자료.어떤? 반환 concat(참고자료) 만약 참고자료.size > 1 참고자료.first.탭 do |doc| 추가(doc) doc.저장 만약 지속 가능? && !_assigning? end self end |
#_remove(document) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
컬렉션 에서 단일 문서 를 제거합니다 *메모리에서만*. 변경 사항이 유지 되지 않습니다 .
236 237 238 239 240 241 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 236 def _remove(문서) _target.delete_one(문서) _unscoped.delete_one(문서) update_attributes_hash 재색인 end |
#as_document ⇒ Array<Hash>
이 연관 관계를 데이터베이스에서 그것의 표현으로 가져옵니다.
110 111 112 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 110 def as_document as_attributes.수집 { |attrs| BSON::문서.신규(attrs) } end |
#빌드(attributes = {}, type = nil) ⇒ 문서 라고도 함: new
연관 관계에서 새 문서 를 빌드하고 이를 대상에 추가합니다. 하위 클래스를 지정하려는 경우 선택적 유형을 사용합니다.
138 139 140 141 142 143 144 145 146 147 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 138 def 빌드(속성 = {}, 유형 = nil) 공장.execution_build(유형 || _association.class, 속성, execution_callbacks: 거짓).탭 do |doc| 추가(doc) doc.apply_post_processed_defaults yield doc 만약 block_given? doc.run_pending_callbacks doc.run_callbacks(:build) { doc } _base._reset_memoized_descendants! end end |
#clear ⇒ self
연결을 해제합니다. 문서가 이미 보존된 경우 데이터베이스에서 문서를 삭제합니다.
호스트 문서가 지속형이 아니지만 호스트 문서의 _id가 지속형 문서와 일치하는 경우, 연관 관계에서 #clear를 호출하면 애플리케이션의 문서 세트(호스트에 로드된 문서 세트)가 현재의 문서 세트와 다르더라도 데이터베이스에서 연관 관계의 문서가 제거됩니다. 는 데이터베이스에 있으며 호스트에는 연결에 영구 문서가 포함될 수 없습니다.
165 166 167 168 169 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 165 def 지우기 batch_clear(_target.dup) update_attributes_hash self end |
#concat(Docs) ⇒ Array<Document>
문서 배열을 연관 관계에 추가합니다. 문서를 한 번에 하나씩 유지하는 대신 배치 삽입을 수행합니다.
123 124 125 126 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 123 def concat(참고자료) batch_insert(참고자료) 하지 않는 한 참고자료.비어 있나요? self end |
#count(*args, &block) ⇒ Integer
실제로 데이터베이스 에 유지된 연관 관계의 문서 수를 반환합니다.
총 문서 수를 확인하려면 #size를 사용하세요.
인수 또는 차단이 있는 경우 #count는 target
의 #count 메서드에 위임되며 영구 문서와 비영구 문서를 모두 포함합니다.
193 194 195 196 197 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 193 def 카운트(*args, &차단) 반환 _target.카운트(*args, &차단) 만약 args.어떤? || 차단 _target.카운트(&:persisted?) end |
#delete(document) ⇒ Document | nil 이라고도 함: delete_one
제공된 문서를 대상에서 삭제합니다. 이 메서드는 작업이 발생한 후 배열을 다시 인덱스하기 위해 프록시됩니다.
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 208 def 삭제(문서) execution_callbacks_round(: 제거, 문서) do _target.delete_one(문서).탭 do |doc| 만약 doc && !_바인딩? _unscoped.delete_one(doc) 만약 _assigning? _base.add_atomic_pull(doc) other doc.삭제(억제: true) unbind_one(doc) end update_attributes_hash end 재색인 end end end |
#delete_all(conditions = {}) ⇒ Integer
콜백을 실행 하지 않고 연관 관계의 모든 문서를 삭제합니다.
254 255 256 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 254 def delete_all(조건 = {}) remove_all(조건, : 삭제) end |
#delete_if ⇒ EmbedsMany::Proxy | 열거자
제공된 차단 이 true를 반환하는 모든 문서를 삭제합니다.
267 268 269 270 271 272 273 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 267 def delete_if 반환 super 하지 않는 한 block_given? _target.dup.각 { |doc| 삭제(doc) 만약 yield doc } self end |
#Destory_all(conditions = {}) ⇒ Integer
콜백을 실행하는 동안 연결에 있는 모든 문서를 삭제합니다.
286 287 288 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 286 def Destory_all(조건 = {}) remove_all(조건, :destory) end |
#존재합니까?(id_or_conditions = :none) ⇒ true | false
이 연관 관계의 문서가 데이터베이스에 존재하는지 확인합니다.
306 307 308 309 310 311 312 313 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 306 def 존재합니까?(id_or_conditions = : none) case id_or_conditions when : none then _target.어떤?(&:persisted?) when nil, 거짓 then 거짓 when 해시 then 위치(id_or_conditions).어떤?(&:persisted?) other 위치(_id: id_or_conditions).어떤?(&:persisted?) end end |
#find {|Object| ... } ⇒ Document | Array<Document> | nil
여러 가지 방법을 통해 이 연관 관계에서 문서를 찾습니다.
이 메서드는 Mongoid::Criteria#find 에 위임합니다. 이 메서드에 차단이 지정되지 않으면 제공된 _id 값에 대해 하나 이상의 문서를 반환합니다.
이 메서드에 차단 이 지정되면 현재 Criteria 객체 로 찾은 문서 중 차단 이 진실 값을 반환하는 첫 번째 문서 를 반환합니다.
340 341 342 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 340 def 찾기(...) 기준.찾기(...) end |
#pop(count = nil) ⇒ Document | Array<Document> | nil
연결에서 문서를 삭제합니다. 이는 단일 문서 또는 여러 문서일 수 있으며 변경 사항이 자동으로 유지됩니다.
365 366 367 368 369 370 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 365 def 팝(카운트 = nil) 반환 [] 만약 카운트&.zero? 참고자료 = _target.last(카운트 || 1).각 { |doc| 삭제(doc) } (카운트.nil? || 참고자료.비어 있나요?) ? 참고자료.first : 참고자료 end |
#shift(count = nil) ⇒ Document | Array<Document> | nil
문서를 연관 관계 밖으로 이동시킵니다. 이는 단일 문서 또는 여러 문서일 수 있으며 변경 사항이 자동으로 유지됩니다.
385 386 387 388 389 390 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 385 def shift(카운트 = nil) 반환 [] 만약 카운트&.zero? 참고자료 = _target.first(카운트 || 1).각 { |doc| 삭제(doc) } (카운트.nil? || 참고자료.비어 있나요?) ? 참고자료.first : 참고자료 end |
#대체(Docs) ⇒ 다수
관계의 기존 문서를 제공된 대상 문서로 대체합니다.
401 402 403 404 405 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 401 def 대체(참고자료) batch_replace(참고자료) update_attributes_hash self end |
#unscoped ⇒ 기준
이전의 모든 범위 지정이 제거된 연관 관계를 반환합니다. 이는 데이터베이스 에 있는 Docs 의 정확한 표현입니다.
414 415 416 417 418 419 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 414 def 범위가 지정되지 않은 criterion = class.범위가 지정되지 않은 criterion. = true criterion.문서 = _unscoped.delete_if(&:marked_for_destruction?) criterion end |