모듈: Mongoid::Traversable::ClassMethods

다음에 정의됨:
lib/mongoid/traversable.rb

개요

순회 가능 동작에 대한 클래스 수준 메서드입니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#유전성?true | false

문서 가 다른 문서 의 하위 클래스인지 확인합니다.

예시:

문서가 하위 클래스인지 확인합니다.

Square.hereditary?

반환합니다:

  • (true | false)

    유전적이면 참, 그렇지 않으면 거짓입니다.

[소스 보기]

43
44
45
# 파일 'lib/mongoid/traversable.rb', 줄 43

def 유전?
  !!(슈퍼클래스 < 몽고이드::문서)
end

#상속됨(하위 클래스) ⇒ 객체

상속할 때 부모 클래스에서 필드를 복사하고 자식 클래스를 시작하도록 설정하다 하여 Rails edge에서 더 이상 사용되지 않는 이전 class_inheritable_accessor의 동작을 모방합니다.

Rubocop:Metrics/AbcSize 비활성화

예시:

이 클래스에서 상속합니다.

Person.inherited(Doctor)

매개변수:

  • 하위 클래스 (클래스)

    상속하는 클래스입니다.

[소스 보기]

69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 파일 'lib/mongoid/traversable.rb', 줄 69

def 상속된(하위 클래스)
  super

  # 리졸버 하위 시스템에 새 하위 클래스를 등록합니다.
  몽고이드::ModelResolver.등록(하위 클래스)

  @_type = nil
  하위 클래스.aliased_fields = aliased_fields.dup
  하위 클래스.localized_fields = localized_fields.dup
  하위 클래스.필드 = 필드.dup
  하위 클래스.pre_processed_defaults = pre_processed_defaults.dup
  하위 클래스.post_processed_defaults = post_processed_defaults.dup
  하위 클래스._declared_scopes = 해시.신규 { |_hash, | _declared_scopes[] }
  하위 클래스.판별자_값 = 하위 클래스.이름

  # 여기에서 이 작업을 수행해야 합니다.
  # 위의 하위 클래스에서 재정의되었습니다.
  하위 클래스.포함 판별자 조회

  # 상속이 진행 중인 경우에만 _type 필드 가 필요하지만 다음을 수행해야 합니다.
  # 이전 버전과의 호환성을 위해 루트 클래스에도 추가합니다.
  반환 만약 필드.키?(판별자_키)

  default_proc = -> { self.클래스.판별자_값 }
  필드(판별자_키, 기본값: default_proc, 유형: 문자열)
end

#root_classMongoid::Document

현재 클래스가 참여하는 STI 트리의 루트 클래스를 반환합니다. 클래스가 STI 하위 클래스가 아닌 경우 클래스 자체를 반환합니다.

반환합니다:

[소스 보기]

52
53
54
55
56
57
# 파일 'lib/mongoid/traversable.rb', 줄 52

def root_class
  루트 = self
  루트 = 루트.슈퍼클래스 동안 루트.유전?

  루트
end