모듈: Mongoid::Association::Referenced::Syncable

포함 항목:
Mongoid::Association
다음에 정의됨:
lib/mongoid/association/referenced/syncable.rb

개요

이 모듈은 다대다 연관 관계의 양쪽 간에 외래 키를 동기화하는 동작을 처리합니다.

네임스페이스 아래에 정의됨

모듈: 클래스 메서드

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#_syncable?(association) ⇒ true | false

문서 를 반대로 동기화할 수 있나요? 이는 키가 변경되었고 연결 바인딩이 실행 되지 않은 경우에만 해당됩니다.

예시:

외래 키를 동기화할 수 있나요?

document._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해시

동기화된 외래 키를 가져옵니다.

예시:

동기화된 외래 키를 가져옵니다.

document._synced

반환합니다:

  • (해시)

    동기화된 외래 키입니다.



31
32
33
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 31

def _synced
  @_synced ||= {}
end

#_synced?(foreign_key) ⇒ true | false

문서 가 외래 키에 대해 동기화되었나요?

예시:

문서 가 동기화되었나요?

document._synced?

매개변수:

  • foreign_key (string)

    외래 키입니다.

반환합니다:

  • (true | false)

    동기화할 수 있다면.



43
44
45
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 43

def _synced?(foreign_key)
  !!_synced[foreign_key]
end

#remove_inverse_keys(association) ⇒ 객체

폐기 시 역방향 키를 업데이트합니다.

예시:

역방향 키를 업데이트합니다.

document.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) ⇒ 객체

연결에 대한 역방향 키를 업데이트합니다.

예시:

역방향 키 업데이트

document.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, 추가합니다.).without_options.add_to_set(연관 관계.inverse_foreign_key => _id)
    end
    하지 않는 한 subs.비어 있나요?
      연관 관계.기준(self, subs).without_options.pull(연관 관계.inverse_foreign_key => _id)
    end
  end
end