Рубин ActiveRecord получает диапазон до последней записи? - PullRequest
0 голосов
/ 03 июля 2018

Предположим, у меня есть 100 записей в моей базе данных, мое мобильное приложение имеет бесконечный просмотр списка, который запрашивает в базе данных записи.

Приложение отображает элементы партиями по 15, когда пользователь достигает конца 15 элементов, приложение запросит следующие 15 элементов. Это означает, что из 10 предметов останется всего 100 штук.

Я пытался взглянуть на некоторые методы ActiveRecord, такие как find:

# Find the clients with primary keys 1 and 10.
clients = Client.find([var, var+14]) # var integer is provided by GET request.
# => [#<Client id: 1, first_name: "Lifo">, #<Client id: 10, first_name: "Ryan">]

Однако отмечается, что The find method will raise an ActiveRecord::RecordNotFound exception unless a matching record is found for all of the supplied primary keys.

Как мне тогда выбрать последние 10 элементов для отображения на экране? Кроме того, возможно ли заставить ActiveRecord возвращать значение, когда в диапазоне нет элементов, чтобы я мог отобразить сообщение all items shown?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
Client.limit(15).offset(var).order(:id)

Это то, что я бы посоветовал, поскольку, насколько я знаю, не должно быть никаких ошибок

0 голосов
/ 03 июля 2018
Client.offset(15 * iteration).first(15)

это то, что я бы порекомендовал здесь. Тогда итерация должна быть 0 для первых 15, 1 во второй раз, когда вы обновляете свой список. Конечно, вы можете настроить способ вычисления смещения.

Возможно, вы захотите указать order, чтобы сохранить его согласованным.

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