클래스: Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- 상속:
-
객체
- 객체
- Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- 다음을 포함합니다.
- 바인딩 가능
- 다음에 정의됨:
- lib/mongoid/association/referenced/has_and_belongs_to_many/Binding.rb
개요
모든 has_and_belongs_to_many 연관 관계에 대한 바인딩 클래스입니다.
인스턴스 속성 요약
Bindable에 포함된 속성
#_association, #_base, #_target
인스턴스 메서드 요약 접기
-
#bind_one(doc) ⇒ 객체
단일 문서 를 역방향 연관 관계로 바인딩합니다.
-
#verify_inverse_association(doc) ⇒ Mongoid::Association::Relatable
문서 에서 역 연관 관계를 찾습니다.
-
#inverse_record_id(doc) ⇒ BSON::ObjectId
inverse_keys가 참조하는 역방향 ID를 찾습니다.
-
#unbind_one(doc) ⇒ 객체
단일 문서의 바인딩을 해제합니다.
Bindable에 포함된 메서드
인스턴스 메서드 세부 정보
#bind_one(doc) ⇒ 객체
단일 문서 를 역방향 연관 관계로 바인딩합니다. 특히 프록시에 추가할 때 사용됩니다.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/Binding.rb', 줄 20 def bind_one(doc) 바인딩 do inverse_keys = try_method(doc, _association.inverse_foreign_key) 하지 않는 한 doc.동결? 만약 inverse_keys record_id = inverse_record_id(doc) 하지 않는 한 inverse_keys.포함?(record_id) try_method(doc, _association.inverse_foreign_key_setter, inverse_keys.push(record_id)) end doc.reset_relation_criteria(_association.inverse) end _base._synced[_association.foreign_key] = true doc._synced[_association.inverse_foreign_key] = true end end |
#verify_inverse_association(doc) ⇒ Mongoid::Association::Relatable
문서 에서 역 연관 관계를 찾습니다.
77 78 79 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/Binding.rb', 줄 77 def describe_inverse_association(doc) doc.관계[_base.클래스.이름.복조화.밑줄.pluralize] end |
#inverse_record_id(doc) ⇒ BSON::ObjectId
inverse_keys가 참조하는 역 ID 찾기
58 59 60 61 62 63 64 65 66 67 68 69 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/Binding.rb', 줄 58 def inverse_record_id(doc) 만약 pk = _association.[:inverse_primary_key] _base.send(pk) other inverse_association = describe_inverse_association(doc) 만약 inverse_association _base.__send__(inverse_association.Primary_key) other _base._id end end end |
#unbind_one(doc) ⇒ Object
단일 문서의 바인딩을 해제합니다.
39 40 41 42 43 44 45 46 47 48 49 50 |
# 파일 'lib/mongoid/association/referenced/has_and_belongs_to_many/Binding.rb', 줄 39 def unbind_one(doc) 바인딩 do _base.send(_association.foreign_key).delete_one(record_id(doc)) inverse_keys = try_method(doc, _association.inverse_foreign_key) 하지 않는 한 doc.동결? 만약 inverse_keys inverse_keys.delete_one(inverse_record_id(doc)) doc.reset_relation_criteria(_association.inverse) end _base._synced[_association.foreign_key] = true doc._synced[_association.inverse_foreign_key] = true end end |