2013-09-26 2 views
0

Я понимаю, что я могу использовать People.first(100) для извлечения первых 100 записей, то же самое для People.last(100).Диапазон идентификаторов через ActiveRecord

Что я не знаю, как мне получить все объекты в диапазоне 200-400, когда общее число позволяет сказать 1000 записей?

ответ

1

Что вам нужно, это limit и offset - для получения дополнительной информации читайте this.

Пример:

People.limit(200).offset(200) 

Приведенный выше код занимает 200 записей, начиная с 201-й записи - это означает, что это было бы записи 201-400.

+0

Имейте в виду, что это не вернет значения в пределах диапазона, оно вернет 200 записей, начиная с 201-й записи. Скажите, что вы удалили 50 записей с идентификаторами от 200 до 400, вы получите 200 записей, но ваши записи могут иметь идентификатор где-нибудь между 200 и 450. Имеет ли это смысл? Таким образом, метод limit-offset гарантирует, что вы получите 200 записей, но если вы ищете диапазон идентификаторов (или другого поля), вы должны использовать метод where. –

0

Вы ищете уникальное поле, ваше название предполагает, что вы ищете по id?

People.where('id BETWEEN ? AND ?', 200, 400) 

или ...

People.where(id: 200..400) 

Если вы не ищете в определенной области, вы хотели бы использовать предел Big_Bird и офсетным методами.

Смежные вопросы