1

我正在尝试使用其 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" 并得到了 size == 25,所以似乎 ':limit' 参数被完全忽略了。

我还尝试了 Issue.find(:all, :limit => 0) 和 :limit => 10,它们都返回了 size == 25。没有限制查询 active_resource 的正确方法是什么?

4

1 回答 1

4

ActiveResource 似乎不支持“限制”选项。如果您查看文档,您将看到可用选项是“来自”和“参数”。

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

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

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

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

限制:响应中存在的项目数(默认为 25,最大值为 100)

您将不得不发出多个请求并使用偏移量和限制参数来获取所有记录。

于 2015-02-27T17:34:55.950 回答