如何将方法添加到ActiveRecord :: Batches使用include

时间:2018-07-25 03:56:43

标签: ruby-on-rails ruby activerecord include

环境:rails 4.2,ruby 2.2.0

我试图添加类似于find_each的函数,但是按ID降序排列。
我想这样使用它。

Person.where('age > 30').find_each_desc.each do |person|
end

我将方法添加到ActiveRecord :: Batches,效果很好。

# file config/initializers/active_record.rb 
module ActiveRecord
  module Batches
    def find_each_desc(options = {})
      # do something
    end
  end
end

但是如果转到anthoer模块,请使用include添加方法,它将无法正常工作。

# file util/find_in_batches_with_order.rb
module Util
  module FindInBatchesWithOrder
    def find_each_desc(options = {})
      # do something
    end
  end
end

# file config/initializers/active_record.rb 
module ActiveRecord
  module Batches
    include Util::FindInBatchesWithOrder
  end
end

# can get find_each_desc method
$ ActiveRecord::Batches.instance_methods
=> [:find_each, :find_in_batches, :find_each_desc]

ActiveRecord :: Relation包含ActiveRecord :: Batches,因此可以在ActiveRecord :: Relation实例方法中找到find_each_desc方法,但不能。

我应该怎么办?

0 个答案:

没有答案