Mongoid 命名空间模型,数据库中没有命名空间

Aar*_*ler 2 ruby-on-rails mongoid

我想知道是否有某种方法可以使用 Mongoid 忽略模型命名空间。我正在将所有模型移动到 Rails 引擎,并为它们命名。我已经能够在没有命名空间的情况下将它们添加到 rails 引擎并且它引用正常,但是我们正在努力转向面向服务的架构,我想命名所有模型。

这是之前和之后的示例模型

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

# After
module Engine
  class Model
    include Mongoid::Document
    field :field1
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我执行时控制台中发生的情况 Engine::Model.all

=> #<Mongoid::Criteria
   selector: {}
   options:  {}
   class:    Engine::Model
   embedded: false>
Run Code Online (Sandbox Code Playgroud)

如果我能做到让 mongoid 寻找Model它,它就会完美地处理我的数据。

理想情况下,我能够做到Engine::Model.all,它会返回这个

=> #<Mongoid::Criteria
   selector: {}
   options:  {}
   class:    Model
   embedded: false>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?

Sim*_*tti 5

引用文档

如果您希望将模型文档的集合保留在其他地方,则可以在类级别更改模型文档的集合。您还可以更改模型从默认值中持久化的数据库和会话。

适用于您的案例

module Engine
  class Model
    include Mongoid::Document
    store_in collection: "models"
    field :field1
  end
end
Run Code Online (Sandbox Code Playgroud)

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