모듈: Mongoid::Association::Referenced::Auto Save

확장자:
ActiveSupport::Concern
포함 항목:
Mongoid::Association
다음에 정의됨:
lib/mongoid/association/referenced/auto_save.rb

개요

Mongoid::Document에 포함된 Mixin 모듈은 주제 문서 를 저장할 때 참조된 연관 관계에서 반대편 문서를 자동으로 저장하는 기능 을 추가합니다.

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

클래스 메서드 세부 정보

.정의_자동 저장!(association) ⇒ 클래스

연결된 객체에 대한 연결의 소유 클래스에서 자동 저장 메서드를 정의합니다.

예시:

자동 저장 메서드를 정의합니다:

Association::Referenced::Autosave.define_autosave!(association)

매개변수:

반환합니다:

  • (클래스)

    연결의 소유자 클래스입니다.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 파일 'lib/mongoid/association/referenced/auto_save.rb', 줄 53

def self.정의_자동 저장!(연관 관계)
  연관 관계.inverse_class. do |class|
    save_method = :"autosave_documents_for_#{연관 관계.이름}"
    class.send(:define_method, save_method) do
      만약 before_callback_halted?
        self.before_callback_halted = 거짓
      other
        __자동 저장__ do
          만약 assoc_value = ivar(연관 관계.이름)
            배열(assoc_value). do |doc|
              PC = doc.persistence_context? ? doc.persistence_context : persistence_context.for_child(doc)
              doc.(PC) do |d|
                d.저장
              end
            end
          end
        end
      end
    end
    class.after_persist_parent save_method, 그렇지 않은 경우: :autosaved?
  end
end

인스턴스 메서드 세부 정보

#__autosaving__Object

관련 자동 저장을 시작합니다.

예시:

Begin autosave.

document.__autosaving__


28
29
30
31
32
33
# 파일 'lib/mongoid/association/referenced/auto_save.rb', 줄 28

def __자동 저장__
  스레드.begin_autosave(self)
  yield
보장
  스레드.exit_autosave(self)
end

#자동 저장?true | false

관련 자동 저장에서 무한 루프를 방지하는 데 사용됩니다.

예시:

문서가 자동으로 저장되나요?

document.autosaved?

반환합니다:

  • (true | false)

    문서가 이미 자동 저장되었나요?



20
21
22
# 파일 'lib/mongoid/association/referenced/auto_save.rb', 줄 20

def 자동 저장?
  스레드.자동 저장?(self)
end

#change_for_autosave?(doc) ⇒ 부울

자동 저장에 대한 변경 사항이 있는지 확인

document.changed_for_autosave?

예시:

자체 또는 내부에 변경 사항이 있으면 true를 반환합니다.

autosaved associations.

반환합니다:



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

def change_for_autosave?(doc)
  doc.new_record? || doc.변경되었나요? || doc.Marked_for_destruction?
end