从 Mongoid 文档中,我看到如果我有以下内容:
class Base
include Mongoid::Document
end
class InheritedA < Base
end
class InheritedB < Base
end
我可以执行以下操作,这将与“_type”属性一起存储。
a = InheritedA.new
a.save
Mongoid 将创建以下文档。
{ _type: "InheritedA" }
我的问题是,稍后我有一个只有 String _type 值的函数,我希望实例化正确的类型。我试过这个:
Base.new({ _type: mytype });
然而,Mongoid 认为这是一个动态属性并拒绝它。我知道打开动态属性不是正确的做法,因为我不想在一般情况下允许这种行为。
我想避免做这样的事情:
ob = nil
if mytype == "InheritedA"
ob = InheritedA.new
elsif
...
有谁知道完成此任务的正确方法?