Проверьте, был ли лимит применен к ActiveRecordRelation - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть ситуация, когда я применяю некоторые критерии к отношению AR, но эти критерии не могут быть выражены в SQL.Пользователи получают доступ к этой функции, подобной следующей:

ar_relation = Model.all
filter = Filter.new
results_array = filter.filter(ar_relation, limit: 10, offset: 10)

Это позволяет пользователям добавлять свои собственные критерии к ar_relation перед применением дополнительной фильтрации.

Я столкнулся со следующей проблемой: Filter исключит строки из результата, поэтому он должен знать о limit и offset.Однако это не очевидно для пользователей.Если они добавляют limit или offset к ar_relation, это прерывает обработку в Filter.

Мое предлагаемое решение состоит в том, чтобы Filter проверить ar_relation для offset или limit и бросьте ArgumentError, если он был предоставлен.Однако из документации AR я не думаю, что можно спросить отношение AR, каково его текущее ограничение.Это возможно?

1 Ответ

0 голосов
/ 11 февраля 2019

Использование #limit_value

User.limit(4).limit_value
# => 4

Как подсказка на будущее, я считаю, что это обычно быстрее, чем копаться в документах AR:

User.limit(4).public_methods.grep /limit/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...