jsonapi-resources有条件地禁用paginator

时间:2017-02-26 11:54:59

标签: ruby-on-rails pagination jsonapi-resources

我在我的Rails应用中使用ExecuteListener。我的一个资源是使用jsonapi-resources gem。有时我想禁用分页并确保用户返回所有结果

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

我试过传递"怪异的"值为paginator,但这没有帮助(分页分页器的示例):

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

1 个答案:

答案 0 :(得分: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

现在每当我想使用paginator时,我需要明确使用paginations params,当我向服务器发出请求时,当我不使用它们时,我会得到完全不合理的响应。

课程实施并不完美(呃!)但它只是为了向您展示一般概念