Как я могу запросить 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)

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

Другие вопросы по тегам