【问题标题】: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
现在每当我想使用分页器时,我需要在向服务器发出请求时显式使用分页参数,而当我不使用它们时,我将得到完整的未分页响应。
类的实现并不完美(呃!),但这只是为了向您展示一般概念