jsonapi-ресурсы условно отключают пагинатор
Я использую гем jsonapi-resources в своем приложении Rails. Один из моих ресурсов использует нумерацию страниц. Есть случаи, когда я хочу отключить нумерацию страниц и убедиться, что пользователь вернет все результаты.
Я попробовал пользовательскую реализацию с некоторым пользовательским фильтром, но не смог.
Я пытался передать "странные" значения в paginator, но это не помогло (примеры для paged paginator):
/api/v1/bars?page[size]=-1
- значение не допускается/api/v1/bars?page[size]=0
- значение не допускается/api/v1/bars?page[size]=999999
- Конечно, это может сработать, но это 100%
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
теперь всякий раз, когда я хочу использовать paginator, мне нужно явно использовать параметры пагинации, когда я делаю запрос к серверу, и когда я не использую их, я получаю полный не разбитый на страницы ответ.
Реализация класса не идеальна (дух!), Но она просто показывает вам общую концепцию