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

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

개요

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

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

모듈: 클래스 메서드

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#_syncable?(association) ⇒ true | false

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

예시:

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

document._syncable?(association)

매개변수:

반환합니다:

  • (true | false)

    동기화할 수 있다면.



18
19
20
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 18

def _syncable?(연관 관계)
  !_synced?(연관 관계.foreign_key) && send(연관 관계.foreign_key_check)
end

#_synced해시

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

예시:

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

document._synced

반환합니다:

  • (해시)

    동기화된 외래 키입니다.



28
29
30
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 28

def _synced
  @_synced ||= {}
end

#_synced?(foreign_key) ⇒ true | false

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

예시:

문서 가 동기화되었나요?

document._synced?

매개변수:

  • foreign_key (string)

    외래 키입니다.

반환합니다:

  • (true | false)

    동기화할 수 있다면.



40
41
42
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 40

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

#remove_inverse_keys(association) ⇒ 객체

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

예시:

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

document.remove_inverse_keys(association)

매개변수:

반환합니다:

  • (객체)

    업데이트된 값입니다.



52
53
54
55
56
57
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 52

def remove_inverse_keys(연관 관계)
  foreign_keys = send(연관 관계.foreign_key)
  반환 만약 foreign_keys.nil? || foreign_keys.비어 있나요?

  연관 관계.기준(self, foreign_keys).pull(연관 관계.inverse_foreign_key => _id)
end

#update_inverse_keys(association) ⇒ 객체

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

예시:

역방향 키 업데이트

document.update_inverse_keys(association)

매개변수:

반환합니다:

  • (객체)

    업데이트된 값입니다.



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 파일 'lib/mongoid/association/referenced/syncable.rb', 줄 67

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