Как отобразить пагинацию пользователей при выполнении действия над определенным пользователем - PullRequest
0 голосов
/ 10 июля 2020

Мы отображаем пользователей в алфавитном порядке с 10 записями на странице, используя will_paginate gem

Предполагая, что мы выполняем действие для activate или deactivate пользователя на 2-й странице (скажем, user15), мы бы предпочли отображать информацию о пользователе на самой 2-й странице или перенаправить пользователя на первую страницу с критериями сортировки по умолчанию здесь

Есть еще один случай, когда это становится проблематичным c:

Предполагается, что имеется 31 запись, поэтому 4-я страница будет содержать одну запись. Если мы удалим этого пользователя, мы не сможем показать четвертую страницу, поскольку такого пользователя не существует. В приведенном выше сценарии page=4 и per_page=10, но не удалось бы отобразить эту страницу

Как мы должны обрабатывать этот сценарий ios, если мы просто покажем page=1 в любом из приведенных выше сценариев ios.

Что было бы правильным поступить в приведенном выше сценарии

1 Ответ

0 голосов
/ 10 июля 2020

Мы бы предпочли отображать информацию о пользователе на самой 2-й странице или перенаправить пользователя на первую страницу с критериями сортировки по умолчанию здесь

Не могли бы вы подробнее рассказать об этом.

Предполагается, что имеется 31 запись, поэтому 4-я страница будет содержать одну запись. Если мы удалим этого пользователя, мы не сможем показать четвертую страницу, поскольку такого пользователя не существует. В приведенном выше сценарии page = 4 и per_page = 10, но отобразить эту страницу не удастся

Возможно, вы захотите изучить разбиение курсора на страницы. Вместо страниц у вас есть курсор для записи и вы получаете все до / после этого курсора. Этим курсором может быть, например, закодированная метка времени created_at.

Разбивка курсора на страницы имеет множество других преимуществ перед разбивкой на страницы со смещением. Однако will_paginate не поддерживает разбиение на страницы курсора, поэтому не уверен, подходит ли вам этот подход.

Чтобы обойти эти проблемы с производительностью, некоторые механизмы баз данных предлагают разбиение на страницы на основе курсора или поощряют разбиение на страницы на основе значений min / max, например WHERE id>: max_id, в котором значение: max_id основано на предыдущей странице результатов. Этот подход обычно лучше для скорости и памяти, но имеет некоторые компромиссы; Наиболее примечательным является то, что когда-либо возможно только go на следующую страницу результатов, а не сразу, например, перейти на страницу 20. Библиотека will_paginate не поддерживает разбиение на страницы на основе курсора.

https://github.com/mislav/will_paginate/wiki

https://medium.com/@meganchang_96378 / why-facebook-say-cursor- пагинация-это-самая большая-d6b98d86b6c0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...