모듈: Mongoid::Association::Relatable
- 포함 항목:
- Embedded::EmbeddedIn, Embedded::EmbedsMany, Embedded::EmbedsOne, Mongoid::Association::Referenced::BelongsTo, Mongoid::Association::Referenced::HasAndBelongsToMany, Mongoid ::Association::Referenced::HasMany :Association::Referenced::HasOne
- 다음에 정의됨:
- lib/mongoid/association/relatable.rb
개요
이 모듈은 연관 관계 유형 간에 공유되는 동작을 제공합니다.
상수 요약 접기
- SHARED_OPTIONS =
모든 연결 유형 간에 공유되는 옵션입니다.
[ :class_name, :inverse_of, :validate, :extend ].동결
- PRIMARY_KEY_DEFAULT =
프라이머리 키 기본값입니다.
'_id'.동결
인스턴스 속성 요약 접기
-
#이름 ⇒ 기호
읽기 전용
연관 관계의 이름입니다.
-
옵션 #개 ⇒ 해시
읽기 전용
이 연결의 옵션입니다.
-
#parent_inclusions ⇒ Array<String>
포함 트리에서 이 연결 위에 있는 연결입니다.
인스턴스 메서드 요약 접기
-
#==(기타) ⇒ 객체
이 연관 관계를 다른 연관 관계와 비교하십시오.
-
#bindable?(doc) ⇒ true | false
이 연결을 사용하여 객체를 바인딩하려고 하면 오류가 발생해야 하는지 여부입니다.
-
#counter_cache_column_name ⇒ string
카운터 캐시 열 이름을 가져옵니다.
-
#create_relation(소유자, 대상) ⇒ 프록시
소유자와 대상을 사용하여 연결 프록시 객체를 만듭니다.
-
#파괴적? ⇒ true | false
종속 메서드가 파괴적인지 여부입니다.
-
#확장 ⇒ 모듈
확장 프로그램을 가져옵니다.
-
#foreign_key_check ⇒ string
외래 키가 변경되었는지 확인하는 메서드의 이름을 가져옵니다.
-
#foreign_key_setter ⇒ string
외래 키 설정자 메서드의 이름입니다.
-
#get_callbacks(callback_type) ⇒ Array<Proc | 기호>
지정된 유형에 대한 콜백을 가져옵니다.
-
#in_to? ⇒ true | false
이 연관 관계는 embedded_in입니까, 아니면 embedded_to 연관 관계입니까?
-
#initialize(_class, name, opts = {}, &block) ⇒ 객체
연관 관계를 초기화합니다.
-
#inverse(기타 = nil) ⇒ 기호
역방향 이름을 가져옵니다.
-
#inverse_association(other = nil) ⇒ Mongoid::Association::Relatable
역방향의 연관 관계 메타데이터를 가져옵니다.
-
#inverse_class ⇒ string (동의어: #inverse_klass)
이 연관 관계를 소유하는 객체의 클래스입니다.
-
#inverse_class_name ⇒ string
이 연관 관계를 소유하는 객체의 클래스 이름입니다.
-
#inverse_setter(기타 = nil) ⇒ string
역방향 setter 메서드의 이름입니다.
-
#inverse_type ⇒ nil
역방향 유형을 가져옵니다.
-
#inverse_type_setter ⇒ string
다형성 연관 관계에서 문서 유형을 설정하는 필드의 setter를 가져옵니다.
-
#inverses(other = nil) ⇒ Array<Symbol>
역방향 이름을 가져옵니다.
-
#키 ⇒ 기호 | string
이 연결이 외래 키를 저장하는 경우 외래 키 필드입니다.
-
#많음? ⇒ true | false
이 연관 관계는 embeddeds_many 또는 has_many 연관 관계입니까?
-
하나? ⇒ true | false
이 연결은 embeddeds_one 또는 has_one 연결입니까?
-
#경로(문서) ⇒ Mongoid::Atomic::Paths::Root
이 연결의 원자 경로입니다.
-
#관계 클래스 ⇒ string (동의어: #klass)
연관 관계 객체의 클래스입니다.
-
#관계 클래스_이름 ⇒ string (동의어: #클래스_이름)
- 클래스 이름(정규되지 않았을 수 있음) 또는
-
연관 객체의 접두사.
-
#setter ⇒ string
연결된 객체를 할당하기 위한 이 객체의 세터 이름입니다.
-
#type_setter ⇒ string
유형 설정자를 가져옵니다.
-
#유효성 검사? ⇒ true | false
연결된 객체의 유효성을 검사해야 하는지 여부입니다.
옵션에 포함된 메서드
#as, #autobuild?, #autosave, #cascading_callbacks?, #counter_cached?, #Cyclic?, #Dependent, #forced_nil_inverse?, #indexed?, #inverse_of, #order, #polymorphic?, #primary_key, #store_as, #터치_필드, #터치 가능?, #type
Constrainable에 포함된 메서드
인스턴스 속성 세부 정보
#이름 ⇒ 기호 (읽기 전용)
연관 관계의 이름입니다.
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_inclusions ⇒ 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
이 연결을 사용하여 객체를 바인딩하려고 하면 오류가 발생해야 하는지 여부입니다.
93 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 93 def 바인딩 가능?(doc); 거짓; end |
#counter_cache_column_name ⇒ 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
종속 메서드가 파괴적인지 여부입니다.
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_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_setter ⇒ 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 | 기호>
지정된 유형에 대한 콜백을 가져옵니다.
75 76 77 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 75 def get_callbacks(콜백 유형) 배열([콜백 유형]) end |
#in_to? ⇒ true | false
이 연관은 embedded_in입니까, 아니면 embedded_to 연관입니까?
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) ⇒ 객체
연관 관계를 초기화합니다.
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
역방향의 연관 관계 메타데이터를 가져옵니다.
118 119 120 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 118 def inverse_association(기타 = nil) (기타 || 관계 클래스).관계[inverse(기타)] end |
#inverse_class ⇒ string inverse_klass 라고도 함
이 연관 관계를 소유하는 객체의 클래스입니다.
185 186 187 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 185 def inverse_class @holder_class end |
#inverse_class_name ⇒ 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 메서드의 이름입니다.
208 209 210 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 208 def inverse_setter(기타 = nil) @inverse_setter ||= "#{inverses(other).first}=" 하지 않는 한 역방향(기타).비어 있나요? end |
#inverse_type ⇒ nil
역방향 유형을 가져옵니다.
125 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 125 def inverse_type; end |
#inverse_type_setter ⇒ string
다형성 연관 관계에서 문서 유형을 설정하는 필드의 setter를 가져옵니다.
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>
역방향 이름을 가져옵니다.
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
이 연결이 외래 키를 저장하는 경우 외래 키 필드입니다. 그렇지 않으면 프라이머리 키입니다.
194 195 196 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 194 def 키 Stores_foreign_key? ? foreign_key : Primary_key end |
#많음? ⇒ true | false
이 연결은 embeddeds_many 또는 has_many 연결입니까?
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 연결입니까?
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로 실패하거나 잘못된 결과를 초래할 수 있습니다(클래스가 다음에 발생하는 경우). 연관 관계 이름과 동일한 이름으로 정의되어야 합니다).
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
메서드를 사용합니다.
148 149 150 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 148 def 관계 클래스 이름 @class_name ||= @options[:class_name] || ActiveSupport::인플렉터.분류하다(이름) end |
#setter ⇒ string
연결된 객체를 할당하기 위한 이 객체의 세터 이름입니다.
201 202 203 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 201 def 세터 @setter ||= "#{name}=" end |
#type_setter ⇒ string
:as 옵션을 사용하는 다형성 연관 관계에만 해당됩니다.
유형 설정자를 가져옵니다.
83 84 85 |
# 파일 'lib/mongoid/association/relatable.rb', 줄 83 def type_setter @type_setter ||= "#{type}=" 만약 유형 end |
#유효성 검사? ⇒ 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 |