Excepción: Mongoid::Errors::UnrecognizedModelAlias

Hereda:
MongoidError
  • Objeto
Mostrar todo
Definido en:
lib/mongoid/errors/unrecognized_model_alias.rb

Overview

Se genera cuando se consulta una asociación polimórfica, pero no se puede resolver el tipo de asociación. Esto suele ocurrir cuando los datos de la base de datos hacen referencia a un tipo que ya no existe.

Por ejemplo, considera el siguiente modelo:

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

Imagina que hay un documento en la colección 'administradores' que se parece a esto:

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

Si, en algún momento durante tu refactorización, renombras el modelo `Department::Engineering` a otro nombre, Mongoid ya no podrá resolver el tipo de esta asociación, y pedir `manager.unit` generará esta excepción.

Para solucionar esta excepción, puede agregar un alias a la clase del modelo para que aún pueda encontrarse, incluso después de cambiarle el nombre:

module Engineering
  class Department
    include Mongoid::Document

    identify_as 'Department::Engineering'

    # ...
  end
end

Las mejores prácticas serían usar strings únicas en vez de nombres de clase para identificar estos tipos polimórficos en la base de datos (por ejemplo, ‘dept’ em vez de ‘Department::Engineering’).

Resumen constante

Constantes heredadas de MongoidError

Error de Mongoid::CLAVE_BASE

Resumen del atributo de la instancia

Atributos heredados de MongoidError

#problema, #solución, #resumen

Resumen del método de instancia colapsar

Métodos heredados de MongoidError

#redactar_mensaje

Detalles del constructor

#initialize(model_alias) ⇒ UnrecognizedModelAlias

Devuelve una nueva instancia de UnrecognizedModelAlias.



43
44
45
46
47
48
49
50
# Archivo 'lib/mongoid/errors/unrecognized_model_alias.rb', línea 43

def inicializar(model_alias)
  super(
    redactar_mensaje(
      'alias_de_modelo_no_reconocido',
      model_alias: model_alias.inspeccionar
    )
  )
end