在我的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中。瞧,即时猴子补丁!