【问题标题】:jsonapi-resources conditionally disable paginatorjsonapi-resources 有条件地禁用分页器
【发布时间】:2017-08-25 23:52:20
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    下面是我处理这个问题的方法。

    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
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2016-01-24
      • 1970-01-01
      相关资源
      最近更新 更多