모듈: Mongoid::Association::Referenced::Syncable
- 포함 항목:
- Mongoid::Association
- 다음에 정의됨:
- lib/mongoid/association/referenced/syncable.rb
개요
이 모듈은 다대다 연관 관계의 양쪽 간에 외래 키를 동기화하는 동작을 처리합니다.
네임스페이스 아래에 정의됨
모듈: 클래스 메서드
인스턴스 메서드 요약 접기
-
#_syncable?(association) ⇒ true | false
문서 를 반대로 동기화할 수 있나요? 이는 키가 변경되었고 연결 바인딩이 실행 되지 않은 경우에만 해당됩니다.
-
#_synced ⇒ 해시
동기화된 외래 키를 가져옵니다.
-
#_synced?(foreign_key) ⇒ true | false
문서 가 외래 키에 대해 동기화되었나요?
-
#remove_inverse_keys(association) ⇒ 객체
폐기 시 역방향 키를 업데이트합니다.
-
#update_inverse_keys(association) ⇒ 객체
연결에 대한 역방향 키를 업데이트합니다.
인스턴스 메서드 세부 정보
#_syncable?(association) ⇒ true | false
문서 를 반대로 동기화할 수 있나요? 이는 키가 변경되었고 연결 바인딩이 실행 되지 않은 경우에만 해당됩니다.
21 22 23 |
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 21 def _syncable?(연관 관계) !_synced?(연관 관계.foreign_key) && send(연관 관계.foreign_key_check) end |
#_synced ⇒ 해시
동기화된 외래 키를 가져옵니다.
31 32 33 |
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 31 def _synced @_synced ||= {} end |
#_synced?(foreign_key) ⇒ true | false
문서 가 외래 키에 대해 동기화되었나요?
43 44 45 |
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 43 def _synced?(foreign_key) !!_synced[foreign_key] end |
#remove_inverse_keys(association) ⇒ 객체
폐기 시 역방향 키를 업데이트합니다.
55 56 57 58 59 60 |
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 55 def remove_inverse_keys(연관 관계) foreign_keys = send(연관 관계.foreign_key) 하지 않는 한 foreign_keys.nil? || foreign_keys.비어 있나요? 연관 관계.기준(self, foreign_keys).pull(연관 관계.inverse_foreign_key => _id) end end |
#update_inverse_keys(association) ⇒ 객체
연결에 대한 역방향 키를 업데이트합니다.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 70 def update_inverse_keys(연관 관계) 만약 이전_변경.has_key?(연관 관계.foreign_key) old, 신규 = 이전_변경[연관 관계.foreign_key] 추가합니다., subs = 신규 - (old || []), (old || []) - 신규 # 자동 저장하는 경우 중복 항목이 추가되는 것을 원하지 않습니다. # $addToSet는 이전에 실행된 다음 $push 및 $each를 실행합니다. # inverse on the autosave would cause this. 다음에서 각 ID를 삭제 합니다. # ID 추가와 객체 추가가 혼합된 경우 메모리에 있는 내용 #이(가) 발생했습니다. 만약 연관 관계.autosave? send(연관 관계.이름).in_memory.각 do |doc| 추가합니다..delete_one(doc._id) end end 하지 않는 한 추가합니다..비어 있나요? 연관 관계.기준(self, 추가합니다.)..add_to_set(연관 관계.inverse_foreign_key => _id) end 하지 않는 한 subs.비어 있나요? 연관 관계.기준(self, subs)..pull(연관 관계.inverse_foreign_key => _id) end end end |