클래스: Mongoid::Association::Embedded::EmbedsMany::Proxy
- 확장자:
- 전달 가능, ClassMethods
- 다음을 포함합니다.
- 배치 가능
- 다음에 정의됨:
- lib/mongoid/association/embedded/embeds_many/proxy.rb
개요
embedded_many 연관 관계를 위한 투명한 프록시입니다. 이 클래스의 인스턴스 는 상위 문서 에서 연결 게터 메서드를 호출할 때 반환됩니다. 이 클래스는 Mongoid::Association::Proxy를 상속하고 해당 메서드의 대부분을 연관 관계의 대상, 즉 하위 문서의 배열 로 전달합니다.
네임스페이스 아래에 정의됨
모듈: 클래스 메서드
인스턴스 메서드 요약 접기
-
#<<(*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
이 연관 관계의 문서가 데이터베이스에 존재하는지 확인합니다.
-
#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에서 상속된 메서드
#공백?, #cache_version, #create, #create!, #find_or_create_by, #find_or_create_by!, #find_or_initialize_by, #nil?, #respond_to?, #scoped, #serializable_hash
생성자 세부 정보
#initialize(base, target,association) ⇒ Many
새 embeddeds_many 연관 관계를 인스턴스화합니다.
70 71 72 73 74 75 76 77 78 79 80 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 70 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을 일관되게 사용하고 있는지 확인하세요. Rubocop:Stylish/MissingRespondToMissing 비활성화
525 526 527 528 529 530 531 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 525 ruby2_keywords def Method_missing(이름, *args, &차단) 반환 super 만약 _target.response_to?(이름) class.send(:with_scope, 기준) do 기준.public_send(이름, *args, &차단) end end |
인스턴스 메서드 세부 정보
#<<(*args) ⇒ 객체 push
문서 또는 문서 배열을 연관 관계에 추가합니다. 프로세스에서 상위 항목을 설정하고 인덱스를 업데이트합니다.
92 93 94 95 96 97 98 99 100 101 102 103 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 92 def <<(*args) 참고자료 = args.flatten 반환 하지 않는 한 참고자료.어떤? 반환 concat(참고자료) 만약 참고자료.size > 1 참고자료.first.탭 do |doc| 추가(doc) doc.저장 만약 지속 가능? && !_assigning? end self end |
#_remove(document) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
메모리에 있는 컬렉션 에서만 단일 문서 제거합니다. 변경 사항이 유지되지 않습니다.
239 240 241 242 243 244 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 239 def _remove(문서) _target.delete_one(문서) _unscoped.delete_one(문서) update_attributes_hash 재색인 end |
#as_document ⇒ Array<Hash>
이 연관 관계를 데이터베이스에서 그것의 표현으로 가져옵니다.
113 114 115 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 113 def as_document as_attributes.수집 { |attrs| BSON::문서.신규(attrs) } end |
#빌드(attributes = {}, type = nil) ⇒ 문서 라고도 함: new
연관 관계에서 새 문서 를 빌드하고 이를 대상에 추가합니다. 하위 클래스를 지정하려는 경우 선택적 유형을 사용합니다.
141 142 143 144 145 146 147 148 149 150 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 141 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를 호출하면 애플리케이션 의 문서 설정하다 ( 호스팅하다 에 로드된 문서 세트)가 현재의 문서 세트와 다르더라도 데이터베이스 에서 제거 관계의 문서가 제거됩니다. 데이터베이스 에 있으며 호스팅하다 에도 연결에 영구 문서가 포함될 수 없습니다.
168 169 170 171 172 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 168 def 지우기 batch_clear(_target.dup) update_attributes_hash self end |
#concat(Docs) ⇒ Array<Document>
문서 배열을 연관 관계에 추가합니다. 문서를 한 번에 하나씩 유지하는 대신 배치 삽입을 수행합니다.
126 127 128 129 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 126 def concat(참고자료) batch_insert(참고자료) 하지 않는 한 참고자료.비어 있나요? self end |
#count(*args, &block) ⇒ Integer
실제로 데이터베이스 에 유지된 연관 관계의 문서 수를 반환합니다.
총 문서 수를 확인하려면 #size를 사용하세요.
인수 또는 차단이 있는 경우 #count는 target 의 #count 메서드에 위임되며 영구 문서와 비영구 문서를 모두 포함합니다.
196 197 198 199 200 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 196 def 카운트(*args, &차단) 반환 _target.카운트(*args, &차단) 만약 args.어떤? || 차단 _target.카운트(&:persisted?) end |
#delete(document) ⇒ Document | nil 이라고도 함: delete_one
제공된 문서를 대상에서 삭제합니다. 이 메서드는 작업이 발생한 후 배열을 다시 인덱스하기 위해 프록시됩니다.
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 211 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
콜백을 실행 하지 않고 연관 관계의 모든 문서를 삭제합니다.
257 258 259 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 257 def delete_all(조건 = {}) remove_all(조건, : 삭제) end |
#delete_if ⇒ EmbedsMany::Proxy | 열거자
제공된 차단 이 true를 반환하는 모든 문서를 삭제합니다.
270 271 272 273 274 275 276 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 270 def delete_if 반환 super 하지 않는 한 block_given? _target.dup.각 { |doc| 삭제(doc) 만약 yield doc } self end |
#Destory_all(conditions = {}) ⇒ Integer
콜백을 실행하는 동안 연결에 있는 모든 문서를 삭제합니다.
289 290 291 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 289 def Destory_all(조건 = {}) remove_all(조건, :destory) end |
#존재합니까?(id_or_conditions = :none) ⇒ true | false
이 연관 관계의 문서가 데이터베이스에 존재하는지 확인합니다.
309 310 311 312 313 314 315 316 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 309 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 |
#pop(count = nil) ⇒ Document | Array<Document> | nil
연결에서 문서를 삭제합니다. 이는 단일 문서 또는 여러 문서일 수 있으며 변경 사항이 자동으로 유지됩니다.
339 340 341 342 343 344 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 339 def 팝(카운트 = nil) 반환 [] 만약 카운트&.zero? 참고자료 = _target.last(카운트 || 1).각 { |doc| 삭제(doc) } (카운트.nil? || 참고자료.비어 있나요?) ? 참고자료.first : 참고자료 end |
#shift(count = nil) ⇒ Document | Array<Document> | nil
문서를 연관 관계 밖으로 이동시킵니다. 이는 단일 문서 또는 여러 문서일 수 있으며 변경 사항이 자동으로 유지됩니다.
359 360 361 362 363 364 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 359 def shift(카운트 = nil) 반환 [] 만약 카운트&.zero? 참고자료 = _target.first(카운트 || 1).각 { |doc| 삭제(doc) } (카운트.nil? || 참고자료.비어 있나요?) ? 참고자료.first : 참고자료 end |
#대체(Docs) ⇒ 다수
관계의 기존 문서를 제공된 대상 문서로 대체합니다.
375 376 377 378 379 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 375 def 대체(참고자료) batch_replace(참고자료) update_attributes_hash self end |
#unscoped ⇒ 기준
이전의 모든 범위 지정이 제거된 연관 관계를 반환합니다. 이는 데이터베이스 에 있는 Docs 의 정확한 표현입니다.
388 389 390 391 392 393 |
# 파일 'lib/mongoid/association/embedded/embeds_many/proxy.rb', 줄 388 def 범위가 지정되지 않은 criterion = class.범위가 지정되지 않은 criterion. = true criterion.문서 = _unscoped.delete_if(&:marked_for_destruction?) criterion end |