1

I use jsonapi-resources gem in my Rails app. One of my resources is using pagination. There are cases when I want to disable the pagination and make sure that user will get back all the results.

I tried custom implementation with some custom filter, but failed.

I tried passing "weird" values to paginator, but that did not help (examples for paged paginator):

  • /api/v1/bars?page[size]=-1 - value not allowed
  • /api/v1/bars?page[size]=0 - value not allowed
  • /api/v1/bars?page[size]=999999 - sure, this might work, but it is 100%
Michal Bryxí
  • 1,166
  • 1
  • 11
  • 18

1 Answers1

2

i got exactly the same problem today and found this unanswered question.

Below is how I dealt with the problem.

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

and in the resources I wanted to use the CustomPaginator I just added paginator :custom like below:

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

now whenever i want to use the paginator i need to explicitly use paginations params when I do the request to the server and when I don't use them I will get full unpaginated response.

The class implementation is not perfect (duh!) but it's just to show you the general concept

beniutek
  • 1,672
  • 15
  • 32