异常:Mongoid::Errors::UnrecognizedModelAlias
- 继承:
-
MongoidError
- 对象
- StandardError
- MongoidError
- Mongoid::Errors::UnrecognizedModelAlias
- 定义于:
- lib/mongoid/errors/unrecognized_model_alias.rb
Overview
当查询多态关联但无法解析关联类型时,则触发。 当数据库中的数据引用不再存在的类型时,通常会发生这种情况。
示例,考虑以下模型:
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
更好的做法是使用唯一字符串而不是类名来标识数据库中的这些多态类型(例如 'dept' 而不是 'Department::Engineering')。
常量摘要
从MongoidError继承的常量
实例属性摘要
从MongoidError继承的属性
实例方法摘要折叠
-
#initialize (model_alias) ⇒ UnrecognizedModelAlias
构造函数
UnrecognizedModelAlias 的新实例。
从MongoidError继承的方法
构造函数详情
#initialize (model_alias) ⇒ UnrecognizedModelAlias
返回 UnrecognizedModelAlias 的新实例。
43 44 45 46 47 48 49 50 |
# File 'lib/mongoid/errors/unrecognized_model_alias.rb', line 43 def 初始化(model_alias) 超( ( ' unrecognized_model_alias ', model_alias: model_alias.检查 ) ) end |