2015-02-27 5 views
1

Я пытаюсь собрать все записи объекта из экземпляра Redmine, используя его рубиновый REST API. Код Пытаюсь:Как я могу запросить ActiveResource без ограничения?

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, оба из которых возвращали размер == 25. Какой был бы правильный метод для запроса active_resource без ограничения?

ответ

4

Похоже, что опция «ограничение» не поддерживается ActiveResource. Если вы отметите documentation, вы увидите, что доступные опции: «from» и «params».

Я предполагаю, что количество возвращенных ресурсов определяется сервером службы. Вы попробовали что-то вроде этого?

Issue.all(params: { limit: 25}) 

Это должно сработать, если я правильно прочитал redmine api documentation.

К сожалению, как указано в документации, 100 является максимально допустимым значением для параметра предела.

предел: количество элементов, чтобы присутствовать в ответ (по умолчанию 25, максимум 100)

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

+1

Это шаг в правильном направлении, но он, кажется, закрыт на 100, предел: 0 => размер 25 и предел: 2000 => размер 100. Я надеюсь выиграть гораздо больше, чем 100 за раз. – Centimane

+1

Недавно я обновил свой ответ со ссылкой на документацию redmine api. Вы заметите, что 100 определяется как максимально допустимое значение. Вам нужно будет комбинировать параметры ограничения и смещения и выполнять несколько запросов, чтобы собрать все проблемы. Я верну свой ответ на примере. – Dabrorius

+2

Мне нужно будет посмотреть, могу ли я изменить этот предел, я бы предпочел не иметь сотни запросов, если я могу его избежать, но так оно и есть. – Centimane

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