모듈: Mongoid::Association::접근자

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

개요

이 모듈에는 게터 및 세터를 통해 연결에 액세스하는 것과 관련된 모든 동작과 새 연결을 생성하기 위해 빌더 에 위임하는 방법이 포함되어 있습니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#__build__(name, 객체,association,selected_fields = nil) ⇒ Proxy

관련 문서를 빌드하고 문서가 nil이 아닌 경우 연관 관계를 생성한 다음, 이 문서에 연관 관계를 설정합니다.

예시:

연관 관계를 구축합니다.

person.__build__(:addresses, { :_id => 1 }, association)

매개변수:

  • 이름 (string | 기호)

    연관 관계의 이름입니다.

  • 객체 (해시 | BSON::ObjectId)

    사용할 ID 또는 속성입니다.

  • 연관 관계 (Mongoid::Association::Relatable)

    연결 메타데이터입니다.

  • selected_fields (해시) (기본값: nil)

    #only를 통해 조회된 필드입니다. selected_fields를 지정하면 여기에 나열되지 않은 필드는 빌드된 문서 에서 액세스할 수 없습니다.

반환합니다:

[소스 보기]

27
28
29
30
# 파일 'lib/mongoid/association/accessors.rb', 줄 27

def __build__(이름, 객체, 연관 관계, selected_fields = nil)
  관계 = create_relation(객체, 연관 관계, selected_fields)
  set_relation(이름, 관계)
end

#create_relation(객체,association,selected_fields = nil) ⇒ 프록시

객체 및 연결 메타데이터 에서 연결을 만듭니다.

예시:

연관 관계를 생성합니다.

person.create_relation(document, association)

매개변수:

  • 객체 (문서 | 배열<문서>)

    연결 대상입니다.

  • 연관 관계 (Mongoid::Association::Relatable)

    연결 메타데이터입니다.

  • selected_fields (해시) (기본값: nil)

    #only를 통해 조회된 필드입니다. Selected_fields를 지정하면 해당 항목에 나열되지 않은 필드는 생성된 연결 문서 에서 액세스할 수 없습니다.

반환합니다:

[소스 보기]

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 파일 'lib/mongoid/association/accessors.rb', 줄 44

def create_relation(객체, 연관 관계, selected_fields = nil)
   = @attributes[연관 관계.inverse_type]
  유형 =  ? 연관 관계.리졸버.Model_for() : nil
  대상 = 만약 t = 연관 관계.빌드(self, 객체, 유형, selected_fields)
    연관 관계.create_relation(self, t)
  other
    nil
  end

  # 포함된 연관 관계에서만 이 작업을 수행하면 됩니다. 보류 중인 콜백
  # 문서를 구체화할 때만 추가됩니다.
  포함된 연결에 대한 #. 데이터베이스 에 대한 호출이 없습니다.
  # 참조된 연관 관계의 구성.
  만약 연관 관계.임베디드?
    배열(대상). do |doc|
      doc.try(:run_pending_callbacks)
    end
  end

  대상
end

#reset_relation_criteria(name) ⇒ 객체

연결 프록시 내부의 기준을 재설정합니다. 다대다 연관 관계에서 기본 ID 배열 을 동기화 된 상태로 유지하는 데 사용됩니다.

예시:

연결 기준을 재설정합니다.

person.reset_relation_criteria(:preferences)

매개변수:

  • 이름 (기호)

    연관 관계의 이름입니다.

[소스 보기]

73
74
75
76
77
# 파일 'lib/mongoid/association/accessors.rb', 줄 73

def reset_relation_criteria(이름)
  만약 instance_variable_defined?("@_#{name}")
    send(이름).reset_unloaded
  end
end

#set_relation(이름, 관계) ⇒ 프록시

제공된 연결을 제공된 이름을 가진 클래스의 인스턴스 변수로 설정합니다. 코드를 깔끔하게 정리하기 위한 헬퍼로 사용됩니다.

예시:

문서 에 프록시를 설정합니다.

person.set(:addresses, addresses)

매개변수:

  • 이름 (string | 기호)

    연관 관계의 이름입니다.

  • 관계 (프록시)

    설정하다 연결입니다.

반환합니다:

[소스 보기]

89
90
91
# 파일 'lib/mongoid/association/accessors.rb', 줄 89

def set_relation(이름, 관계)
  instance_variable_set("@_#{name}", 관계)
end