Excepción: Mongoid::Errors::UnrecognizedModelAlias
- Hereda:
-
MongoidError
- Objeto
- Error estándar
- MongoidError
- Mongoid::Errors::Alias de modelo no reconocido
- Definido en:
- lib/mongoid/errors/alias_de_modelo_no_reconocido.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, considere 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 punto de su refactorización, cambia el nombre del modelo 'Departamento::Ingeniería' a algo diferente, Mongoid ya no podrá resolver el tipo de esta asociación y solicitar '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
Una mejor práctica sería utilizar 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
Resumen de atributos de instancia
Atributos heredados de MongoidError
#problema, #resolución, #resumen
Colapso del resumen del método de instancia
-
#inicializar(alias_del_modelo) ⇒ Alias_del_modelo_no_reconocido
constructor
Una nueva instancia de UnrecognizedModelAlias.
Métodos heredados de MongoidError
Detalles del constructor
#inicializar(alias_del_modelo) ⇒ Alias_del_modelo_no_reconocido
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( ( 'alias_de_modelo_no_reconocido ', model_alias: model_alias.inspeccionar ) ) end |