예외: Mongoid::Errors::UnrecognizedModelAlias

상속:
MongoidError
  • 객체
모두 표시
다음에 정의됨:
lib/mongoid/errors/unrecognized_model_alias.rb

개요

다형성 연관이 쿼리되지만 연관 유형을 확인할 수 없을 때 발생합니다. 이는 일반적으로 데이터베이스 의 데이터가 더 이상 존재하지 않는 유형을 참조할 때 발생합니다.

예시 들어 다음 모델을 가정해 보겠습니다.

class Manager
  include Mongoid::Document
  belongs_to :unit, polymorphic: true
end

'managers' 컬렉션 에 다음과 같은 문서 있다고 가정해 보겠습니다.

{ _id: ..., unit_id: ..., unit_type: 'Department::Engineering' }

리팩터링의 어느 점 에서 'Department::Engineering' 모델의 이름을 다른 이름으로 변경하면 Mongoid는 더 이상 이 연결 유형을 확인할 수 없으며 'manager.unit' 이 예외가 발생합니다.

이 예외를 수정하려면 모델 클래스에 별칭을 추가하여 이름을 바꾼 후에도 해당 모델을 찾을 수 있도록 할 수 있습니다.

module Engineering
  class Department
    include Mongoid::Document

    identify_as 'Department::Engineering'

    # ...
  end
end

클래스 이름 대신 고유한 문자열을 사용하여 데이터베이스 에서 이러한 다형성 유형을 식별하는 것이 더 나은 방법입니다(예: 'Department::Engineering' 대신 'dept').

상수 요약

MongoidError에서 상속된 상수

MongoidError::BASE_KEY

인스턴스 속성 요약

MongoidError에서 상속된 속성

#problem, #Resolution, #summary

인스턴스 메서드 요약 접기

MongoidError에서 상속된 메서드

#compose_message

생성자 세부 정보

#initialize(model_alias) ⇒ UnrecognizedModelAlias

UnrecognizedModelAlias의 새 인스턴스 반환합니다.

[소스 보기]

43
44
45
46
47
48
49
50
# 파일 'lib/mongoid/errors/unrecognized_model_alias.rb', 줄 43

def 초기화(model_alias)
  super(
    Compose_message(
      'unrecognized_model_alias ',
      model_alias: model_alias.검사
    )
  )
end