모듈: Mongoid::Association::Relatable

개요

이 모듈은 연관 관계 유형 간에 공유되는 동작을 제공합니다.

상수 요약 접기

SHARED_OPTIONS =

모든 연결 유형 간에 공유되는 옵션입니다.

반환합니다:

  • (Array<Symbol>)

    공유 옵션.

[
  :class_name,
  :inverse_of,
  :validate,
  :extend
].동결
PRIMARY_KEY_DEFAULT =

프라이머리 키 기본값입니다.

반환합니다:

  • (string)

    프라이머리 키 필드 기본값입니다.

'_id'.동결

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

옵션에 포함된 메서드

#as, #autobuild?, #autosave, #cascading_callbacks?, #counter_cached?, #Cyclic?, #Dependent, #forced_nil_inverse?, #indexed?, #inverse_of, #order, #polymorphic?, #primary_key, #store_as, #터치_필드, #터치 가능?, #type

Constrainable에 포함된 메서드

#convert_to_foreign_key

인스턴스 속성 세부 정보

#이름기호 (읽기 전용)

연관 관계의 이름입니다.

반환합니다:

  • (기호)

    연관 관계의 이름입니다.



33
34
35
# 파일 'lib/mongoid/association/relatable.rb', 줄 33

def 이름
  @name
end

#options해시 (읽기 전용)

이 연결의 옵션입니다.

반환합니다:

  • (해시)

    옵션.



38
39
40
# 파일 'lib/mongoid/association/relatable.rb', 줄 38

def 옵션
  @options
end

#parent_inclusionsArray<String>

포함 트리에서 이 연결 위에 있는 연결입니다.

반환합니다:

  • (Array<String>)

    연관 관계.



306
307
308
# 파일 'lib/mongoid/association/relatable.rb', 줄 306

def parent_inclusions
  @parent_inclusions
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ 객체

이 연관 관계를 다른 연관 관계와 비교하십시오.

반환합니다:

  • (객체)

    이 연관 관계와 비교할 객체입니다.



62
63
64
65
66
67
# 파일 'lib/mongoid/association/relatable.rb', 줄 62

def ==(기타)
  관계 클래스 이름 == 기타.관계 클래스 이름 &&
    inverse_class_name == 기타.inverse_class_name &&
      이름 == 기타.이름 &&
        옵션 == 기타.옵션
end

#bindable?(doc) ⇒ true | false

이 연결을 사용하여 객체를 바인딩하려고 하면 오류가 발생해야 하는지 여부입니다.

매개변수:

  • doc (문서)

    바인딩할 문서입니다.

반환합니다:

  • (true | false)

    문서를 바인딩할 수 있는지 여부입니다.



93
# 파일 'lib/mongoid/association/relatable.rb', 줄 93

def 바인딩 가능?(doc); 거짓; end

#counter_cache_column_namestring

카운터 캐시 열 이름을 가져옵니다.

반환합니다:

  • (string)

    카운터 캐시 열 이름입니다.



270
271
272
273
274
# 파일 'lib/mongoid/association/relatable.rb', 줄 270

def counter_cache_column_name
  @counter_cache_column_name ||= (@options[:counter_cache].is_a?(문자열) ||
      @options[:counter_cache].is_a?(기호)) ?
      @options[:counter_cache] : "# { {inverse || inverse_class_name._ _ _ _ _ _
end

#create_relation(소유자, 대상) ⇒ 프록시

소유자와 대상을 사용하여 연결 프록시 객체를 만듭니다.

매개변수:

  • 소유자 (문서)

    이 연결이 중단된 문서입니다.

  • 대상 (문서 | 배열<문서>)

    연관 관계의 대상(상위)입니다.

반환합니다:



256
257
258
# 파일 'lib/mongoid/association/relatable.rb', 줄 256

def create_relation(소유자, 대상)
  관계.신규(소유자, 대상, self)
end

#파괴적?true | false

종속 메서드가 파괴적인지 여부입니다.

반환합니다:

  • (true | false)

    종속 메서드가 파괴적인 경우.



263
264
265
# 파일 'lib/mongoid/association/relatable.rb', 줄 263

def 파괴적인?
  @destructive ||= !!(종속 && (종속 == :delete_all || 종속 == :destory))
end

#확장모듈

확장 프로그램을 가져옵니다.

반환합니다:

  • (모듈)

    확장 모듈(정의된 경우)입니다.



279
280
281
# 파일 'lib/mongoid/association/relatable.rb', 줄 279

def 확장 프로그램
  @extension ||= @options[:extend]
end

#foreign_key_checkstring

외래 키가 변경되었는지 확인하는 메서드의 이름을 가져옵니다.

예시:

외래 키 검사 메서드를 가져옵니다.

association.foreign_key_check

반환합니다:

  • (string)

    외래 키를 확인합니다.



245
246
247
# 파일 'lib/mongoid/association/relatable.rb', 줄 245

def foreign_key_check
  @foreign_key_check ||= "#{foreign_key}_previously_changed?" 만약 (Stores_foreign_key? && foreign_key)
end

#foreign_key_setterstring

외래 키 설정자 메서드의 이름입니다.

반환합니다:

  • (string)

    외래 키 설정자의 이름입니다.



215
216
217
218
219
# 파일 'lib/mongoid/association/relatable.rb', 줄 215

def foreign_key_setter
  # 참고: 이 연결이 외래 키를 저장하는지 확인할 수 없습니다.
  # HasOne 및 HasMany 바인딩 참조, foreign_key_setter 참조
  @foreign_key_setter ||= "#{foreign_key}=" 만약 foreign_key
end

#get_callbacks(callback_type) ⇒ Array<Proc | 기호>

지정된 유형에 대한 콜백을 가져옵니다.

매개변수:

  • 콜백 유형 (기호)

    콜백 유형의 유형입니다.

반환합니다:

  • (Array<Proc | Symbol>)

    메서드 이름 또는 Procs인 콜백 목록입니다.



75
76
77
# 파일 'lib/mongoid/association/relatable.rb', 줄 75

def get_callbacks(콜백 유형)
  배열(옵션[콜백 유형])
end

#in_to?true | false

이 연관은 embedded_in입니까, 아니면 embedded_to 연관입니까?

반환합니다:

  • (true | false)

    embedded_in 또는 embedded_to 연관 관계이면 true 이고, 그렇지 않으면 false 입니다.



333
334
335
# 파일 'lib/mongoid/association/relatable.rb', 줄 333

def in_to?
  [참조됨::Belongs To, Embedded::EmbeddedIn].어떤? { |a| self.is_a?(a) }
end

#initialize(_class, name, opts = {}, &block) ⇒ 객체

연관 관계를 초기화합니다.

매개변수:

  • _class (클래스)

    이 연관 관계를 소유한 모델의 클래스입니다.

  • 이름 (기호)

    연관 관계의 이름입니다.

  • opts (해시) (기본값: {})

    연결 옵션.

  • 차단 (차단)

    선택적 차단입니다.



46
47
48
49
50
51
52
53
54
55
56
57
# 파일 'lib/mongoid/association/relatable.rb', 줄 46

def 초기화(_class, 이름, opts = {}, &차단)
  @holder_class = _class
  @name = 이름
  @options = opts
  @extension = nil

  @module_path = _class.이름 ? _class.이름.split('::')[0..-2].가입('::') : ''
  @module_path << '::' 하지 않는 한 @module_path.비어 있나요?

  create_extension!(&차단)
  유효성을 검사합니다!
end

#inverse(기타 = nil) ⇒ 기호

역방향 이름을 가져옵니다.

반환합니다:

  • (기호)

    역방향 이름입니다.



286
287
288
289
# 파일 'lib/mongoid/association/relatable.rb', 줄 286

def inverse(기타 = nil)
  후보자 = 역방향(기타)
  후보자.감지 { |C| C } 만약 후보자
end

#inverse_association(other = nil) ⇒ Mongoid::Association::Relatable

역방향의 연관 관계 메타데이터를 가져옵니다.

매개변수:

  • 기타 (객체) (기본값: nil)

    역방향을 결정할 때 사용할 다른 모델 클래스 또는 모델 객체입니다.

반환합니다:



118
119
120
# 파일 'lib/mongoid/association/relatable.rb', 줄 118

def inverse_association(기타 = nil)
  (기타 || 관계 클래스).관계[inverse(기타)]
end

#inverse_classstring inverse_klass 라고도

이 연관 관계를 소유하는 객체의 클래스입니다.

반환합니다:

  • (string)

    소유 객체의 클래스입니다.



185
186
187
# 파일 'lib/mongoid/association/relatable.rb', 줄 185

def inverse_class
  @holder_class
end

#inverse_class_namestring

이 연관 관계를 소유하는 객체의 클래스 이름입니다.

반환합니다:

  • (string)

    소유 객체의 클래스 이름입니다.



178
179
180
# 파일 'lib/mongoid/association/relatable.rb', 줄 178

def inverse_class_name
  @inverse_class_name ||= @holder_class.이름
end

#inverse_setter(기타 = nil) ⇒ string

역방향 setter 메서드의 이름입니다.

반환합니다:

  • (string)

    역방향 설정자의 이름입니다.



208
209
210
# 파일 'lib/mongoid/association/relatable.rb', 줄 208

def inverse_setter(기타 = nil)
  @inverse_setter ||= "#{inverses(other).first}=" 하지 않는 한 역방향(기타).비어 있나요?
end

#inverse_typenil

역방향 유형을 가져옵니다.

반환합니다:

  • (nil)

    연관 관계의 기본값은 nil입니다.



125
# 파일 'lib/mongoid/association/relatable.rb', 줄 125

def inverse_type; end

#inverse_type_setterstring

다형성 연관 관계에서 문서 유형을 설정하는 필드의 setter를 가져옵니다.

예시:

역방향 유형 설정자를 가져옵니다.

association.inverse_type_setter

반환합니다:

  • (string)

    세터의 이름입니다.



235
236
237
# 파일 'lib/mongoid/association/relatable.rb', 줄 235

def inverse_type_setter
  @inverse_type_setter ||= "#{inverse_type}=" 만약 inverse_type
end

#inverses(other = nil) ⇒ Array<Symbol>

역방향 이름을 가져옵니다.

매개변수:

  • 기타 (객체) (기본값: nil)

    역방향을 결정할 때 사용할 다른 모델 클래스 또는 모델 객체입니다.

반환합니다:

  • (Array<Symbol>)

    역방향 이름 목록입니다.



101
102
103
104
105
106
107
108
109
110
# 파일 'lib/mongoid/association/relatable.rb', 줄 101

def 역방향(기타 = nil)
  반환 [ inverse_of ] 만약 inverse_of
  반환 [] 만약 @options.키?(:inverse_of) && !inverse_of

  만약 다형성?
    polymorphic_inverses(기타)
  other
    describe_inverses(기타)
  end
end

#기호 | string

이 연결이 외래 키를 저장하는 경우 외래 키 필드입니다. 그렇지 않으면 프라이머리 키입니다.

반환합니다:

  • (기호 | string)

    기본 키입니다.



194
195
196
# 파일 'lib/mongoid/association/relatable.rb', 줄 194

def 
  Stores_foreign_key? ? foreign_key : Primary_key
end

#많음?true | false

이 연결은 embeddeds_many 또는 has_many 연결입니까?

반환합니다:

  • (true | false)

    *_many 연관 관계이면 true 이고, 그렇지 않으면 false 입니다.



318
319
320
# 파일 'lib/mongoid/association/relatable.rb', 줄 318

def 많은?
  [참조됨::Has Many, Embedded::Embeds Many].어떤? { |a| self.is_a?(a) }
end

하나?true | false

이 연결은 embeddeds_one 또는 has_one 연결입니까?

반환합니다:

  • (true | false)

    *_one 연관 관계이면 true 이고, 그렇지 않으면 false 입니다.



325
326
327
# 파일 'lib/mongoid/association/relatable.rb', 줄 325

def 하나?
  [참조됨::Has One, Embedded::Embeds One].어떤? { |a| self.is_a?(a) }
end

#경로(문서) ⇒ Mongoid::Atomic::Paths::Root

이 연결의 원자 경로입니다.

반환합니다:



224
225
226
# 파일 'lib/mongoid/association/relatable.rb', 줄 224

def 경로(문서)
  관계.경로(문서)
end

#관계 클래스 ⇒ string ~라고도 함: klass

연관 관계 객체의 클래스입니다.

이 메서드는 호스트 문서 클래스를 기준으로 확인된 relation_class_name 에 해당하는 클래스 인스턴스를 반환합니다.

클래스가 존재하지 않으면 이 메서드는 NameError를 발생시킵니다. 이는 대상 클래스가 아직 정의되지 않았기 때문에 발생할 수 있습니다. 다형성 연관 관계에는 일반적으로 대상 클래스가 잘 정의되어 있지 않은데, 이는 대상 클래스가 한 객체에서 다른 객체로 변경될 수 있기 때문이며, 다형성 연관 관계에서 이 메서드를 호출하면 일반적으로 NameError로 실패하거나 잘못된 결과를 초래할 수 있습니다(클래스가 다음에 발생하는 경우). 연관 관계 이름과 동일한 이름으로 정의되어야 합니다).

반환합니다:

  • (string)

    연결 객체의 클래스입니다.



167
168
169
170
171
172
# 파일 'lib/mongoid/association/relatable.rb', 줄 167

def 관계 클래스
  @klass ||= 시작
    cls_name = @options[:class_name] || ActiveSupport::인플렉터.분류하다(이름)
    resolve_name(inverse_class, cls_name)
  end
end

#관계 클래스_이름 ⇒ string ~라고도 함: class_name

참고:

반환 값이 항상 정규화된 클래스 이름은 아니므로 이 메서드의 반환 값을 사용하여 두 연결이 동일한 대상 클래스를 가지고 있는지 여부를 확인해서는 안 됩니다. 클래스를 비교하려면 relation_class 메서드를 사용하여 연결 대상의 클래스 인스턴스를 검색합니다.

클래스 이름(정규되지 않았을 수 있음) 또는

접두사가 붙은, 연관 관계의

객체(들).

이 메서드는 연관 관계 정의에 사용된 클래스 이름을 반환합니다. 연관 관계에 :class_name 옵션이 제공되면, 해당 옵션의 정확한 값이 여기에 반환됩니다. :class_name 옵션을 지정하지 않으면 클래스 이름은 연관 관계 이름에서 계산되지만 실제 클래스로 해석되지는 않습니다.

이 메서드가 반환하는 클래스 이름은 해당 클래스가 아직 로드되지 않았거나 연관 관계가 존재하지 않는 클래스를 완전히 참조하기 때문에 정의된 클래스와 일치하지 않을 수 있습니다. 연결 클래스를 가져오려면 relation_class 메서드를 사용합니다.

반환합니다:

  • (string)

    연결 객체의 클래스 이름입니다.



148
149
150
# 파일 'lib/mongoid/association/relatable.rb', 줄 148

def 관계 클래스 이름
  @class_name ||= @options[:class_name] || ActiveSupport::인플렉터.분류하다(이름)
end

#setterstring

연결된 객체를 할당하기 위한 이 객체의 세터 이름입니다.

반환합니다:

  • (string)

    세터 이름입니다.



201
202
203
# 파일 'lib/mongoid/association/relatable.rb', 줄 201

def 세터
  @setter ||= "#{name}="
end

#type_setterstring

참고:

:as 옵션을 사용하는 다형성 연관 관계에만 해당됩니다.

유형 설정자를 가져옵니다.

반환합니다:

  • (string)

    유형 설정자 메서드입니다.



83
84
85
# 파일 'lib/mongoid/association/relatable.rb', 줄 83

def type_setter
  @type_setter ||= "#{type}=" 만약 유형
end

#유효성 검사?true | false

연결된 객체의 유효성을 검사해야 하는지 여부입니다.

반환합니다:

  • (true | false)

    연결된 객체의 유효성을 검사해야 하는지 여부입니다.



295
296
297
298
299
300
301
# 파일 'lib/mongoid/association/relatable.rb', 줄 295

def 유효성 검사?
  @validate ||= 만약 @options[:validate].nil?
                  validation_default
                other
                  !!@options[:validate]
                end
end