【问题标题】:How do I add a method to ActiveRecord::Batches?如何向 ActiveRecord::Batches 添加方法?
【发布时间】:2015-02-20 15:05:38
【问题描述】:

我试图为ActiveRecordss find_in_batches 方法添加我的自定义实现。首先,我尝试对相应的模块进行monkeypatch:

module ActiveRecord
  module Batches
    def find_in_batches2
    end
  end
end

Task.find_in_batches2 do |group|
end

但是ruby说:

NoMethodError: undefined method `find_in_batches2' for Task (call 'Task.connection' to establish a connection):Class
/home/yuri/.gem/ruby/2.1.5/gems/activerecord-4.2.0/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
/srv/http/tm/Rakefile:15:in `<top (required)>'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `block in load'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `block in load'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency'
/home/yuri/.gem/ruby/2.1.5/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load'
-e:1:in `<main>'

然后我尝试关注this answer,但无济于事。我做错了什么,为什么这么难?

【问题讨论】:

  • 你没有描述你的意图或任何要遵循的逻辑。我发现更改 ActiveRecord 有时是一项艰巨的任务,但如果不知道您打算做什么,我们无能为力
  • @engineersmnky 如果您想知道的话,我想按降序批量迭代记录。

标签: ruby rails-activerecord


【解决方案1】:

解决办法如下:

ActiveRecord::Batches.module_eval do
  def find_in_batches2
  end
end

ActiveRecord::Querying.module_eval do
  delegate :find_in_batches2, :to => :all
end

别忘了实现find_in_batches2

【讨论】:

  • 您能否详细说明我的解决方案有什么问题,您的代码到底是什么,为什么会这样?
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 2019-08-28
相关资源
最近更新 更多