如何解决Rails超时了太多记录,一次无法接收或访问
我当前正在处理一个问题,即报告接收的信息过多,并导致随后的加载超时或花费很长时间加载所有必要的数据。据我了解,当前函数当前正在使用find方法,find_by_batches可能对此更好,但是我不确定我当前的查找如何在数组键上进行操作。我的意图仍然是获取数据,但可能要对其进行批处理,以便更快地加载。下面是嵌套数组的代码片段和示例。该问题发生在嵌套的消费者哈希中,该哈希包含许多具有相应键/值的个人消费者记录。
var input = document.querySelector("#command");
var theConsole = document.querySelector("#console");
theConsole.scollTop = theConsole.scrollHeight;
var myScroll = document.getElementById("scroll");
function doAThing(event) {
var theKeyCode = event.keyCode;
if(theKeyCode === 13) acceptCommand();
setInterval(scrollUpdate,1000);
}
function scrollUpdate() {
myScroll.scrollTop = myScroll.scrollHeight;
}
function acceptCommand() {
var p = document.createElement("p");
if(input.value === "hi") theConsole.append("Hi!",p);
if(input.value === "ping") theConsole.append("Pong!",p);
}
module Reports
class GroupsController < ::ApplicationController
def consumers
@group = Group.find(consumer_params[:group_id])
end
private
def consumer_params
params.permit(:group_id)
end
end
end
解决方法
Jvillian是正确的,最初我的发现不是问题,因为该查询不会引起任何加载问题。在测试了不同的循环之后,所有时序都是相似的。问题与显示如此大的数据集有关。
分页使用Kaminari和API-Pagination宝石解决了这个问题。利用以下代码,我可以将列表分成几页,每页500个使用者。
module Reports
class GroupsController < ::ApplicationController
def consumers
@group = Group.find(consumer_params[:group_id])
@consumers = @group.consumers
paginate_json: @consumers,per_page: 500
end
private
def consumer_params
params.permit(:group_id)
end
end
end
json.conference @group,partial: 'group',as: :group
json.attendees @consumers,partial: 'consumer',as: :consumer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。