2013-12-18 58 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因爲這是模型定義的位置。

相關問題