2013-12-18 61 views
2

我想知道是否有某种方式可以用Mongoid忽略模型命名空间。我将所有模型移动到一个轨道引擎,并将它们命名为空间。我已经能够将它们添加到没有名称空间的rails引擎中,并且它的引用很好,但是我们正在转向面向服务的体系结构,并且我想命名空间所有模型。Mongoid命名空间模型,在数据库中没有名称空间

下面是一个例子模型前后

# Before 
class Model 
    include Mongoid::Document 
    field :field1 
end 

# After 
module Engine 
    class Model 
    include Mongoid::Document 
    field :field1 
    end 
end 

下面是在控制台中会发生什么,当我做Engine::Model.all

=> #<Mongoid::Criteria 
    selector: {} 
    options: {} 
    class: Engine::Model 
    embedded: false> 

如果我能让这个mongoid看起来只是Model它会很喜欢我的数据。

理想我能够做到Engine::Model.all,它会返回此

=> #<Mongoid::Criteria 
    selector: {} 
    options: {} 
    class: Model 
    embedded: false> 

有没有办法做到这一点?

回答

4

Quoting the documentation

的集合模型的文档可以在类级别被改变,如果你想他们在其他地方依然存在。您还可以更改数据库和模型从默认值持续保留的会话。

适用于你的情况

module Engine 
    class Model 
    include Mongoid::Document 
    store_in collection: "models" 
    field :field1 
    end 
end 

类不能改变,那一定是Engine::Model因为这是模型定义的位置。

相关问题