Excepción: Mongoid::Errors::UnrecognizedModelAlias

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

Overview

Se genera cuando se query una asociación polimórfica, pero no se puede determinar el tipo de la asociación. Esto suele ocurrir cuando los datos en 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 document en la colección managers que se ve más o menos así:

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

Si, en algún momento durante tu refactorización, renombras el model 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 corregir esta excepción, puedes agregar un alias a la clase del modelo para que aún se pueda encontrar, incluso después de renombrarla:

module Engineering
class Department
  include Mongoid::Document

  identify_as 'Department::Engineering'

  # ...
end
end

La mejor práctica sería usar cadenas únicas en lugar de nombres de clase para identificar estos tipos polimórficos en la base de datos (por ejemplo, "dept" en lugar de "Department::Engineering").

Resumen constante

Constantes heredadas de MongoidError

MongoidError::BASE_KEY

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

#compose_message

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(
    compose_message(
      'alias_de_modelo_no_reconocido',
      model_alias: model_alias.inspeccionar
    )
  )
end