Ruby on rails 如何无限制地查询ActiveResource?
我正在尝试使用Redmine的ruby REST API从Redmine实例收集对象的所有条目。我正在尝试的代码:Ruby on rails 如何无限制地查询ActiveResource?,ruby-on-rails,ruby,activeresource,redmine-api,Ruby On Rails,Ruby,Activeresource,Redmine Api,我正在尝试使用Redmine的ruby REST API从Redmine实例收集对象的所有条目。我正在尝试的代码: require 'rubygems' require 'active_resource' class Issue < ActiveResource::Base self.site = '<site url>' self.user = '<username>' self.password = '<password>'
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显然是错误的。我还尝试了“:limit=>10”,得到了size==25,因此“:limit”参数似乎被完全忽略了
我还尝试了Issue.find(:all,:limit=>0)和:limit=>10,它们都返回size==25。无限制查询活动资源的正确方法是什么?似乎ActiveResource不支持“限制”选项。如果您查看,您将看到可用的选项是“from”和“params”
我猜返回的资源数量由服务服务器决定。你试过这样的吗
Issue.all(params: { limit: 25})
如果我读对了,这应该行得通
不幸的是,如文件所述,100是极限参数的最大允许值
限制:响应中要显示的项目数(默认值为25,最大值为100)
您必须发出多个请求并使用offset和limit参数来获取所有记录。ActiveResource似乎不支持“limit”选项。如果您查看,您将看到可用的选项是“from”和“params”
我猜返回的资源数量由服务服务器决定。你试过这样的吗
Issue.all(params: { limit: 25})
如果我读对了,这应该行得通
不幸的是,如文件所述,100是极限参数的最大允许值
限制:响应中要显示的项目数(默认值为25,最大值为100)
您将不得不发出多个请求,并使用offset和limit参数来获取所有记录。这是正确的一步,但它似乎以100、limit:0=>size 25和limit:2000=>size 100为上限。我希望一次的得分能超过100分。我最近更新了我的答案,并链接到RedMineAPI文档。您会注意到,100被定义为最大允许值。您必须将limit和offset参数组合起来,并执行多个请求以收集所有问题。我将用一个例子更新我的答案。我将不得不看看我是否可以修改该限制,如果可以避免的话,我不希望有数百个查询,但现在就是这样。Redmine强制执行的限制可以在其代码中轻松删除,在文件:
/htdocs/app/controllers/application\u controller.rb
中有一行:elsif limit>100\limit=100
,可以注释掉该行以删除最大100个限制。考虑到可以使用多个查询来获取任意数量的项目,并且额外的查询会对服务器造成更大的负担,强制执行100的最大限制似乎没有什么帮助。这是朝着正确的方向迈出的一步,但它的上限似乎是100,limit:0=>size 25,limit:2000=>size 100。我希望一次的得分能超过100分。我最近更新了我的答案,并链接到RedMineAPI文档。您会注意到,100被定义为最大允许值。您必须将limit和offset参数组合起来,并执行多个请求以收集所有问题。我将用一个例子更新我的答案。我将不得不看看我是否可以修改该限制,如果可以避免的话,我不希望有数百个查询,但现在就是这样。Redmine强制执行的限制可以在其代码中轻松删除,在文件:/htdocs/app/controllers/application\u controller.rb
中有一行:elsif limit>100\limit=100
,可以注释掉该行以删除最大100个限制。考虑到可以使用多个查询来获取任意数量的项目,并且额外的查询将对服务器造成更大的负担,强制执行100的最大限制似乎没有什么帮助。