클래스: Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy
- 상속:
-
Mongoid::Association::Referenced::HasMany::Proxy
- 객체
- 프록시
- Many
- Mongoid::Association::Referenced::HasMany::Proxy
- Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy
- 확장자:
- 클래스 메서드
- 다음에 정의됨:
- lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb
개요
has_and_belongs_to_many 연관 관계를 위한 투명한 프록시입니다. 이 클래스의 인스턴스 는 주제 문서 에서 연관 게터 메서드를 호출할 때 반환됩니다. 이 클래스는 Mongoid::Association::Proxy에서 상속되며 대부분의 메서드를 연관 관계의 대상, 즉 로드해야 하는 반대편 컬렉션 의 문서 배열 에 전달합니다.
네임스페이스 아래에 정의됨
모듈: 클래스 메서드
상수 요약
프록시에서 상속된 상수
인스턴스 속성 요약
프록시에서 상속된 속성
#_association, #_base, #_target
인스턴스 메서드 요약 접기
-
#<<(*args) ⇒ Array<Document> (동의어: #push)
문서 또는 문서 배열을 연관 관계에 추가합니다.
-
#build(attributes = {}, type = nil) {|doc| ... } ⇒ 문서 (동의어: #new)
속성에서 새 문서를 작성하고 저장하지 않고 이 연결에 추가합니다.
-
#concat(documents) ⇒ Array<Document>
문서 배열 을 연관 관계에 추가합니다.
-
#삭제(문서) ⇒ 문서 (동의어: #delete_one)
연결에서 문서를 삭제합니다.
-
#nullify(replacement = []) ⇒ 객체 (동의어: #nullify_all, #clear, #perge)
외래 키와 참조를 삭제하고 프로세스에서 대상 문서를 분리하여 기본 문서와 대상 문서 간의 모든 연관 관계를 제거합니다.
-
#대체(교체) ⇒ 다수
연관 관계의 기존 문서를 제공된 대상 문서로 대체합니다.
-
#unscoped ⇒ 기준
기본 범위를 적용하지 않고 문서에 대한 기준을 가져옵니다.
ClassMethods에 포함된 메서드
Mongoid::Association::Referenced::HasMany::Proxy에서 상속된 메서드
#delete_all, #destroy_all, #each, #exists?, #find, #initialize
Mongoid::Association::Referenced::HasMany::Proxy::ClassMethods에포함된 메서드
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, #initialize, #klass, #reset_unloaded, #substutable
마셜러블에 포함된 메서드
생성자 세부 정보
이 클래스는 Mongoid::Association::Referenced::HasMany::Proxy의 생성자를 상속합니다.
동적 메서드 처리
이 클래스는 Mongoid::Association::Referenced::HasMany::Proxy 클래스의 Method_missing 메서드를 통해 동적 메서드를 처리합니다.
인스턴스 메서드 세부 정보
#<<(*args) ⇒ Array<Document> 또한 다음과 같이 알려져 있습니다: push
문서 또는 문서 배열을 연관 관계에 추가합니다. 프로세스에서 상위 항목을 설정하고 인덱스를 업데이트합니다.
Rubocop:Metrics/AbcSize 비활성화
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 90 91 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 58 def <<(*args) 참고자료 = args.flatten 반환 concat(참고자료) 만약 참고자료.size > 1 만약 (doc = 참고자료.first) 추가(doc) do # 외래 키 값의 변경 사항은 무시합니다. # 이 코드 차단 에 변경된_속성 해시를 포함하는 데에는 두 가지 이유가 있습니다. # # 1) add_to_set 메서드는 외부 # change_attributes 해시에 키를 입력하지만 다음을 입력하면 # 메서드에 외래 키 값을 포함하는 # updated_attributes 해시를 입력한 다음 외부에 존재하도록 합니다. # 이 메서드도 마찬가지입니다. 나중에 Syncable에서 사용됩니다. # 모듈을 사용하여 역방향 외래 키를 설정합니다. # 2) reset_unloaded 메서드는 외부 # _base의 키, 즉 # change_attributes 해시. 이는 다음과 같은 이유로 인해 발생합니다. # "resizable" 속성을 지정하면 다음 항목에 자동으로 추가됩니다. # change_attributes 해시. 이는 외국의 경우에만 해당됩니다. # 다른 연관 관계인 HABTM 연관 관계의 키 값 # 외래 키 값에 문자열을 사용합니다. 일관성 # 다른 연관 관계에서는 이 추가 사항을 무시합니다. # change_attributes 해시. # 이에 대한 자세한 내용은 MONGOID-4843 을(를) 참조하세요. reset_foreign_key_changes do _base.add_to_set(foreign_key => doc.public_send(_association.Primary_key)) doc.저장 만약 Child_persistable?(doc) reset_unloaded end end end 동기화되지 않음(_base, foreign_key) 개인정보 정책에 self end |
#build(attributes = {}, type = nil) {|doc| ... } ⇒ 문서 ~라고도 함: new
속성에서 새 문서를 작성하고 저장하지 않고 이 연결에 추가합니다.
123 124 125 126 127 128 129 130 131 132 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 123 def 빌드(속성 = {}, 유형 = nil) doc = 공장.execution_build(유형 || class, 속성, execution_callbacks: 거짓) 추가(doc) doc.apply_post_processed_defaults _base.public_send(foreign_key).push(doc.public_send(_association.Primary_key)) 동기화되지 않음(doc, inverse_foreign_key) yield(doc) 만약 block_given? doc.run_pending_callbacks doc end |
#concat(documents) ⇒ Array<Document>
문서 배열을 연관 관계에 추가합니다. 문서를 한 번에 하나씩 유지하는 대신 배치 삽입을 수행합니다.
105 106 107 108 109 110 111 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 105 def concat(문서) ID, 참고자료, 삽입 = {}, [], [] 문서.각 { |doc| append_document(doc, ID, 참고자료, 삽입) } _base.push(foreign_key => ID.키) 만약 지속 가능? || _creating? 지속_지연(참고자료, 삽입) self end |
#delete(document) ⇒ Document 또한 다음과 같이 알려져 있습니다: delete_one
연결에서 문서를 삭제합니다. 이렇게 하면 문서의 외래 키가 nil로 설정됩니다. 연관 관계의 종속 옵션이 :delete_all 또는 :destory인 경우 적절한 제거가 수행됩니다.
146 147 148 149 150 151 152 153 154 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 146 def 삭제(문서) doc = super 만약 doc && 지속 가능? _base.pull(foreign_key => doc.public_send(_association.Primary_key)) _target._unloaded = 기준 동기화되지 않음(_base, foreign_key) end doc end |
#nullify(replacement = []) ⇒ 객체 nullify_all, clear, 퍼지 라고도 합니다.
외래 키와 참조를 삭제하고 프로세스에서 대상 문서를 분리하여 기본 문서와 대상 문서 간의 모든 연관 관계를 제거합니다.
168 169 170 171 172 173 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 168 def nullify(교체 = []) _target.각 { |doc| execution_callback :before_remove, doc } Cleanup_inverse_for(교체) 하지 않는 한 _association.forced_nil_inverse? _base.세트(foreign_key => _base.public_send(foreign_key).지우기) 만약 지속 가능? clear_target_for_nullify end |
#대체(교체) ⇒ 다수
연관 관계의 기존 문서를 제공된 대상 문서로 대체합니다. 새 대상이 nil인 경우 필요한 삭제를 수행합니다.
Person.preferences.substry([ new_post ])
189 190 191 192 193 194 195 196 197 198 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 189 def 대체(교체) 퍼지(교체) 만약 교체.비어 있나요? reset_unloaded clear_foreign_key_changes other push(교체.컴팩트.uniq) end self end |
#unscoped ⇒ 기준
기본 범위를 적용하지 않고 문서에 대한 기준을 가져옵니다.
207 208 209 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb', 줄 207 def 범위가 지정되지 않은 class.범위가 지정되지 않은.any_in(_id: _base.public_send(foreign_key)) end |