如何无限制地查询ActiveResource?

How do I query ActiveResource without a limit?

我正在尝试使用其 ruby REST API 从 Redmine 实例收集对象的所有条目。我正在尝试的代码:

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。查询 [=21 的正确方法是什么=]没有限制?

ActiveResource 似乎不支持 "limit" 选项。如果查看 documentation,您会看到可用的选项是 'from' 和 'params'。

我的猜测是返回的资源数量是由服务服务器决定的。你尝试过这样的事情吗?

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

如果我正确阅读 redmine api documentation,这应该可以工作。

不幸的是,如文档中所述,100 是 limit 参数的最大允许值。

limit: the number of items to be present in the response (default is 25, maximum is 100)

您将必须发出多个请求并使用 offset 和 limit 参数来获取所有记录。