未定义的方法`paginate&#39; for#<pg :: result:0x007f8f096a3390(converting =“”arel =“”result)=“”

时间:2017-06-05 19:00:47

标签: ruby-on-rails ruby activerecord

=“”

我有以下方法:

@vulnerabilities = Vulnerability.details(filter_version_param, 
                     filter: filter,
                   sort: order)
                     .paginate(page: page_param, per_page: 10)

此方法的内部使用arel查找要在页面上显示的相关信息。但是,当我从.page gem遇到will_paginate方法时,收到以下错误:

`undefined method `paginate' for #<PG::Result:0x007f8f096a3390>`

这当然要归功于返回的对象不是ActiveRecord的类。我的问题是,是否有办法将PG类转换为ActiveRecord模型?来自另一个开发人员的应用程序的先前实现创建了一个Struct.new()类并将值提供给它。我想知道是否有更简单的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

您有两种选择:

  • Kaminary gem as an example:将查询结果转换为    数组并使用Kaminary.paginate_array(array_of_result).page(#pagenumber).per(#elemnts per page),但这种方式可能会导致大数据表出现问题,因为您需要加载孔表,然后对页面进行切片!

  • 您可以构建一个对象,该对象具有分页器完成其工作所需的足够方法。

有关上述两点的更多解释和信息,请注意这个link