모듈: Mongoid::Association::Relatable

개요

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

상수 요약 접기

SHARED_OPTIONS =

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

반환합니다:

  • (Array<Symbol>)

    공유 옵션.

%i[
  class_name
  inverse_of
  유효성 검사
  확장
].동결
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

인스턴스 속성 세부 정보

#이름기호 (읽기 전용)

연관 관계의 이름입니다.

반환합니다:

  • (기호)

    연관 관계의 이름입니다.



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

def 이름
  @name
end

#options해시 (읽기 전용)

이 연결의 옵션입니다.

반환합니다:

  • (해시)

    옵션.



36
37
38
# 파일 'lib/mongoid/association/relatable.rb', 줄 36

def 옵션
  @options
end

#owner_classClass (readonly)

The class that owns this association.

반환합니다:

  • (클래스)

    The owner class.



41
42
43
# 파일 'lib/mongoid/association/relatable.rb', 줄 41

def owner_class
  @holder_class
end

#parent_inclusionsArray<String>

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

반환합니다:

  • (Array<String>)

    연관 관계.



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

def parent_inclusions
  @parent_inclusions ||= []
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ 객체

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

반환합니다:

  • (객체)

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



65
66
67
68
69
70
# 파일 'lib/mongoid/association/relatable.rb', 줄 65

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

#bindable?(_doc) ⇒ true | false

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

매개변수:

  • doc (문서)

    바인딩할 문서입니다.

반환합니다:

  • (true | false)

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



96
97
98
# 파일 'lib/mongoid/association/relatable.rb', 줄 96

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

#counter_cache_column_namestring

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

반환합니다:

  • (string)

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



275
276
277
278
279
280
281
282
# 파일 'lib/mongoid/association/relatable.rb', 줄 275

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

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

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

매개변수:

  • 소유자 (문서)

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

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

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

반환합니다:



261
262
263
# 파일 'lib/mongoid/association/relatable.rb', 줄 261

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

#파괴적?true | false

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

반환합니다:

  • (true | false)

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



268
269
270
# 파일 'lib/mongoid/association/relatable.rb', 줄 268

def 파괴적인?
  @destructive ||= !!(종속 && %i[delete_all 파괴].포함?(종속))
end

#확장모듈

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

반환합니다:

  • (모듈)

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



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

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

#foreign_key_checkstring

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

예시:

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

association.foreign_key_check

반환합니다:

  • (string)

    외래 키를 확인합니다.



250
251
252
# 파일 'lib/mongoid/association/relatable.rb', 줄 250

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

#foreign_key_setterstring

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

반환합니다:

  • (string)

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



220
221
222
223
224
# 파일 'lib/mongoid/association/relatable.rb', 줄 220

def foreign_key_setter
  # NOTE: You can't check if this association stores foreign key
  # HasOne 및 HasMany 바인딩 참조, foreign_key_setter 참조
  @foreign_key_setter ||= "#{foreign_key}=" 만약 foreign_key
end

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

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

매개변수:

  • 콜백 유형 (기호)

    콜백 유형의 유형입니다.

반환합니다:

  • (Array<Proc | Symbol>)

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



78
79
80
# 파일 'lib/mongoid/association/relatable.rb', 줄 78

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

#in_to?true | false

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

반환합니다:

  • (true | false)

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



341
342
343
# 파일 'lib/mongoid/association/relatable.rb', 줄 341

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

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

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

매개변수:

  • _class (클래스)

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

  • 이름 (기호)

    연관 관계의 이름입니다.

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

    연결 옵션.

  • 차단 (차단)

    선택적 차단입니다.



49
50
51
52
53
54
55
56
57
58
59
60
# 파일 'lib/mongoid/association/relatable.rb', 줄 49

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) ⇒ 기호

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

반환합니다:

  • (기호)

    역방향 이름입니다.



294
295
296
297
# 파일 'lib/mongoid/association/relatable.rb', 줄 294

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

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

Get the inverse's association metadata.

매개변수:

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

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

반환합니다:



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

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

#inverse_classstring inverse_klass 라고도

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

반환합니다:

  • (string)

    The owning objects' class.



190
191
192
# 파일 'lib/mongoid/association/relatable.rb', 줄 190

def inverse_class
  @holder_class
end

#inverse_class_namestring

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

반환합니다:

  • (string)

    The owning objects' class name.



183
184
185
# 파일 'lib/mongoid/association/relatable.rb', 줄 183

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

#inverse_setter(기타 = nil) ⇒ string

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

반환합니다:

  • (string)

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



213
214
215
# 파일 'lib/mongoid/association/relatable.rb', 줄 213

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

#inverse_typenil

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

반환합니다:

  • (nil)

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



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

def inverse_type; end

#inverse_type_setterstring

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

예시:

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

association.inverse_type_setter

반환합니다:

  • (string)

    세터의 이름입니다.



240
241
242
# 파일 'lib/mongoid/association/relatable.rb', 줄 240

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

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

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

매개변수:

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

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

반환합니다:

  • (Array<Symbol>)

    역방향 이름 목록입니다.



106
107
108
109
110
111
112
113
114
115
# 파일 'lib/mongoid/association/relatable.rb', 줄 106

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

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

#기호 | string

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

반환합니다:

  • (기호 | string)

    기본 키입니다.



199
200
201
# 파일 'lib/mongoid/association/relatable.rb', 줄 199

def 
  Stores_foreign_key? ? foreign_key : Primary_key
end

#많음?true | false

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

반환합니다:

  • (true | false)

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



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

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

하나?true | false

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

반환합니다:

  • (true | false)

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



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

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

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

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

반환합니다:



229
230
231
# 파일 'lib/mongoid/association/relatable.rb', 줄 229

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

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

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

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

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

반환합니다:

  • (string)

    The association objects' class.



172
173
174
175
176
177
# 파일 'lib/mongoid/association/relatable.rb', 줄 172

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)

    The association objects' class name.



153
154
155
# 파일 'lib/mongoid/association/relatable.rb', 줄 153

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

#setterstring

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

반환합니다:

  • (string)

    세터 이름입니다.



206
207
208
# 파일 'lib/mongoid/association/relatable.rb', 줄 206

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

#type_setterstring

참고:

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

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

반환합니다:

  • (string)

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



86
87
88
# 파일 'lib/mongoid/association/relatable.rb', 줄 86

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

#유효성 검사?true | false

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

반환합니다:

  • (true | false)

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



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

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