Как я могу запросить ActiveResource без ограничений?
Я пытаюсь собрать все записи объекта из экземпляра Redmine, используя его ruby REST API. Код, который я пытаюсь:
require 'rubygems'
require 'active_resource'
class Issue < ActiveResource::Base
self.site = '<site url>'
self.user = '<username>'
self.password = '<password>'
self.format = :xml
end
test = Issue.all
puts test.size
test = Issue.all(:limit => 0)
puts test.size
В результате получается:
25
25
В базе данных тысячи записей, поэтому размер до 25 явно не указан. Я также попытался ":limit => 10" и получил размер == 25, поэтому кажется, что аргумент ':limit' полностью игнорируется.
Я также пробовал Issue.find(:all,:limit => 0) и:limit => 10, оба из которых возвращали size == 25. Какой будет правильный метод для запроса active_resource без ограничения?
1 ответ
Кажется, что опция "limit" не поддерживается ActiveResource. Если вы ознакомитесь с документацией, вы увидите, что доступны опции 'from' и 'params'.
Я предполагаю, что количество возвращаемых ресурсов определяется сервисным сервером. Вы пробовали что-то подобное?
Issue.all(params: { limit: 25})
Это должно работать, если я правильно прочитал документацию по redmine api.
К сожалению, как указано в документации, 100 - максимально допустимое значение для параметра limit.
предел: количество элементов, присутствующих в ответе (по умолчанию 25, максимум 100)
Вам нужно будет сделать несколько запросов и использовать параметры смещения и ограничения для получения всех записей.