在我的Oracle版本上,will_paginate gem损坏了。 WillPaginate模块中的默认paginate_by_sql方法在查询中插入了额外的“AS”,并导致其失败。

代码本身很容易修复,但是我不确定让Rails接受我的更改的最佳方法。

我不想更改gem本身中的代码,因为那样会使我的代码在其他计算机上损坏。

我尝试创建一个包含以下内容的lib / test.rb文件:

module WillPaginate
  def paginate_by_sql
    (my code goes here)
  end
end

并从environment.rb要求它,但是它没有接受我的更改。
我还尝试从controllers / application.rb中要求它,但是再次,没有取走我的更改。

暂时,我通过重写特定模型本身中的方法使它起作用,但这有点麻烦,这意味着我不能在该项目的任何其他模型上使用它。

我敢肯定有一个简单的方法可以做到这一点,但是我没有运气用Google来追踪它。

最佳答案

您正在执行的操作将起作用,但是您的代码需要如下所示:

module WillPaginate
  module Finder
    module ClassMethods
      def paginate_by_sql(sql, options)
        # your code here
      end
    end
  end
end

换句话说,进入finder.rb,删除除模块头和要覆盖的方法以外的所有内容,然后保存到lib中的文件中并包含在environment.rb中。瞧,即时猴子补丁!

09-30 22:38
查看更多