1

我在我的 Rails 应用程序中使用jsonapi-resources gem 。我的资源之一是使用pagination。在某些情况下,我想禁用分页并确保用户将取回所有结果

我尝试使用一些自定义过滤器进行自定义实现,但失败了。

我尝试将“奇怪”的值传递给分页器,但这没有帮助(分页器的示例):

  • /api/v1/bars?page[size]=-1- 不允许的值
  • /api/v1/bars?page[size]=0- 不允许的值
  • /api/v1/bars?page[size]=999999- 当然,这可能有效,但它是 100%
4

1 回答 1

2

我今天遇到了完全相同的问题,发现了这个未回答的问题。

下面是我如何处理这个问题。

class CustomPaginator < PagedPaginator
  attr_reader :limit, :offset, :disable_pagination

  def initialize(params)
    @disable_pagination = params.nil?
    super
  end

  def apply(relation, _order_options)
    disable_pagination ? relation : super
  end
end

在我想使用的资源中,CustomPaginator我刚刚添加paginator :custom如下:

class UserResource < JSONAPI::Resource
  paginator :custom
  ....user implementation
end

现在,每当我想使用分页器时,我需要在向服务器发出请求时显式使用分页参数,而当我不使用它们时,我将得到完整的未分页响应。

类实现并不完美(呃!),但这只是为了向您展示一般概念

于 2017-08-25T15:52:20.583 回答