클래스: Mongoid::ModelResolver

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음에 정의됨:
lib/mongoid/model_resolver.rb

개요

판별 키를 기반으로 모델 클래스를 해석하기 위한 기본값 클래스입니다. 키가 주어지면 해당 모델 클래스가 있는 경우 이를 반환합니다. 기본값 으로 지정된 키와 일치하는 이름을 가진 클래스를 찾지만 추가 매핑이 제공될 수 있습니다.

여러 리졸버를 인스턴스화하고 직접 구현 다양한 클래스 세트가 독립적인 확인 메커니즘을 사용할 수도 있습니다.

상수 요약 접기

INSTance_MUDEX =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

'를 만드는 데 사용되는 뮤텍스 인스턴스 . 인스턴스` 메서드는 스레드로부터 안전합니다.

뮤텍스.신규

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initializeModelResolver

새 ModelResolver 인스턴스 인스턴스화합니다.

[소스 보기]

75
76
77
78
# 파일 'lib/mongoid/model_resolver.rb', 줄 75

def 초기화
  @key_to_model = {}
  @model_to_keys = {}
end

클래스 메서드 세부 정보

. 인스턴스⇒ Mongoid::ModelResolver

ModelResolver의 기본값 인스턴스 반환합니다.

반환합니다:

[소스 보기]

27
28
29
# 파일 'lib/mongoid/model_resolver.rb', 줄 27

def 인스턴스
  @instance ||= INSTance_MUDEX.동기화 { @instance ||= 신규 }
end

.Register_resolver(리졸버, 이름) ⇒ 객체

지정된 리졸버를 지정된 이름으로 등록합니다.

매개변수:

  • 리졸버 (Mongoid::ModelResolver::Interface)

    리졸버를 사용하여 등록합니다.

  • 이름 (string | 기호)

    리졸버를 등록하는 데 사용할 식별자입니다.

[소스 보기]

68
69
70
71
# 파일 'lib/mongoid/model_resolver.rb', 줄 68

def Register_resolver(리졸버, 이름)
  리졸버[이름.to_sym] = 리졸버
  self
end

.resolver(identifier_or_object = : 기본값) ⇒ Mongoid::ModelResolver::Interface

인수에 해당하는 리졸버 인스턴스 반환합니다.

매개변수:

  • Identifier_or_object (nil | true | false 기호 | 문자열 | Mongoid::ModelResolver::Interface) (기본값: : 기본값)

    nil 또는 false인 경우 nil을 반환합니다. true 또는 : 기본값 인 경우 기본값 해석기에 해당합니다. 다른 기호 또는 문자열이 있는 경우 해당 식별자로 등록된 해석기에 해당합니다. 그렇지 않으면 리졸버 인스턴스 자체여야 합니다.

반환합니다:

  • (Mongoid::ModelResolver::Interface)

    지정된 인수에 해당하는 리졸버 인스턴스 .

다음을 발생시킵니다.

  • 지정된 식별자가 기호 또는 문자열이고 등록된 리졸버와 일치하지 않는 경우 Mongoid::Errors::UnrecognizedResolver입니다.

[소스 보기]

52
53
54
55
56
57
58
59
60
61
62
# 파일 'lib/mongoid/model_resolver.rb', 줄 52

def 리졸버(Identifier_or_object = :default)
  case Identifier_or_object
  when nil, 거짓 then nil
  when true, :default then 인스턴스
  when 문자열, 기호
    리졸버.가져오기(Identifier_or_object.to_sym) do ||
      올리다 몽고이드::오류::UnrecognizedResolver, 
    end
  other Identifier_or_object
  end
end

.resolversHash<Symbol => Mongoid::ModelResolver::Interface>

등록된 리졸버의 맵을 반환합니다. 기본값 해석기는 여기에 포함되지 않습니다.

반환합니다:

  • (Hash<Symbol => Mongoid::ModelResolver::Interface>)

    기호 식별자로 매핑된 해석기 인스턴스의 해시입니다.

[소스 보기]

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

def 리졸버
  @resolvers ||= {}
end

인스턴스 메서드 세부 정보

#Register(klass, *keys) ⇒ 객체

지정된 키를 사용하여 지정된 모델 클래스를 등록합니다. 지정된 키 외에도 클래스 이름 자체가 클래스를 식별하는 키로 포함됩니다. 키가 우선 순위 순위에 따라 지정되며, 우선 순위 가장 높은 키가 먼저 표시되고 가장 낮은 키가 나중에 표시됩니다. 클래스 이름은 명시적으로 지정하지 않으면 항상 가장 낮은 우선 순위 부여됩니다.

두 번 이상 호출하면 최신 키가 이전 키보다 우선 순위 높습니다. 모든 중복 키가 제거됩니다.

매개변수:

  • class (Mongoid::Document)

    등록할 문서 클래스

  • *keys (Array<String>)

    별칭으로 사용할 키 목록(선택 사항)

[소스 보기]

90
91
92
93
94
95
96
97
98
99
100
101
# 파일 'lib/mongoid/model_resolver.rb', 줄 90

def 등록(class, *)
  default_key = class.이름

  @model_to_keys[class] = [ *, *@model_to_keys[class], default_key ].uniq
  @key_to_model[default_key] = class

  . do ||
    @key_to_model[] = class
  end

  self
end