如何向Mongoid :: Criteria添加类方法?

时间:2019-07-02 13:14:37

标签: ruby ruby-on-rails-5 mongoid

我想向Mongoid :: Criteria添加一个新的类方法,所有模型都可以使用此方法,例如:

class User
  include Mongoid::Document
  ......
end

然后我将以下代码添加到rails初始化

class Mongoid::Criteria
  def use_master
    read(mode: :primary_preferred)
  end
end

但它不起作用:

pry(main)> User.use_master
NoMethodError: undefined method `use_master' for User:Class

如何为模型添加“ use_master”方法?任何高级帮助!

2 个答案:

答案 0 :(得分:0)

可以通过持久性上下文更改读取首选项:

User.with(read: {mode: :primary_preferred}) do
  # ...
end

《 Mongoid》手册对此进行了更深入的说明:https://docs.mongodb.com/mongoid/master/tutorials/mongoid-persistence/#runtime-persistence-options

答案 1 :(得分:0)

我找到了一个好的解决方案:

module Mongoid
  module Findable
    def use_master
      read(mode: :primary_preferred)
    end
  end
end