will_paginateRuby 在我的甲骨文版本中被 destruct 了.WillPaginate模块中的默认paginate_by_sql方法是在查询中插入一个额外的"AS",并导致其失败.

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

我不想更改gem本身的代码,因为这会让我的代码在其他机器上被 destruct .

我试着创建一个库/测试.rb文件包含:

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

并要求环境保护.rb,但它没有收到我的变化.

暂时,我通过重写特定模型本身中的方法来实现它,但这有点像黑客,这意味着我不能在这个项目中的任何其他模型上使用它.

我相信有一个简单的方法可以做到这一点,但我没有任何运气跟踪它使用谷歌.

推荐答案

您所做的工作将起作用,但您的代码需要如下所示:

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

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

Ruby-on-rails相关问答推荐

为什么这个rails Collection_select不呈现关联属性?

Ruby - 如何删除目录中早于 X 天的所有文件?

具有 IN 子句的参数化查询在 ruby​​-on-rails 的 blazer 工具中无法按预期工作

在 Datatable Ajax 调用中通过 Ajax 更新 div

ruby on rails 中的自定义关联

设计 token_authenticable 已弃用,有什么替代方案?

来自控制台的 ActionCable.server.broadcast

2个空格或1个制表符,Rails社区的缩进标准是什么?

Time.zone.now.to_date 是否等同于 Date.today?

rails, activerecord, 获取当前连接规范

安装mysql2(0.4.8)时出错,Bundler无法继续

单击表格行(使用 bootstrap 程序)时,如何使用模式显示数据?

Rails 服务对象与 lib 类

如何将字符串转换为类方法?

Rails Devise:设置密码重置令牌并重定向用户

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

Ruby on Rails:如何为 postgresql 编辑 database.yml?

rails respond_to format.js API

如何翻译 ActiveRecord 模型类名称?

将现有的 html.erb 转换为 Haml