Exceção: Mongoid::Errors::UnrecognizedModelAlias

Herda:
MongoidError
  • Objeto
mostrar tudo
Definido em:
lib/mongoid/errors/unrecognizanted_model_alias.rb

Visão geral

Elevado quando uma associação polimórfica é consultada, mas o tipo da associação não pode ser resolvido. Isso geralmente acontece quando os dados no banco de dados fazem referência a um tipo que não existe mais.

Por exemplo, considere o seguinte modelo:

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

Imagine que há um documento na coleção 'managers' que se parece com isto:

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

Se, em algum ponto de sua refatoração, você renomear o modelo 'Department::Engineering' para outra coisa, o Mongoid não poderá mais resolver o tipo dessa associação e solicitar 'manager.unit' criará essa exceção.

Para corrigir essa exceção, você pode adicionar um alias à classe do modelo para que ela ainda possa ser encontrada, mesmo depois de renomeá-la:

module Engineering
  class Department
    include Mongoid::Document

    identify_as 'Department::Engineering'

    # ...
  end
end

A melhor prática seria usar strings únicas em vez de nomes de classe para identificar esses tipos polimórficos no banco de dados (por exemplo 'dept' em vez de 'Departamento::Engineering').

Resumo constante

Constantes herdadas de MongoidError

MongoidError::BASE_KEY

Resumo do atributo de instância

Atributos herdados de MongoidError

#problema, #resolução, #summary

Recolhimento do Resumo do método de instância

Métodos herdados de MongoidError

#compose_message

Detalhes do construtor

#initialize(model_alias) ➤ UnrecognizedModelAlias

Retorna uma nova instância de UnrecognizedModelAlias.

[Ver fonte]

43
44
45
46
47
48
49
50
# File 'lib/mongoid/errors/unrecognizanted_model_alias.rb', linha 43

def inicializar(model_alias)
  super(
    compound_message(
      'unecognized_model_alias ',
      model_alias: model_alias.inspecionar
    )
  )
end