Rails 一次接收或访问的记录过多超时

Rails timing out too many records to receive or access at once

我目前正在处理一个问题,即报告接收到过多信息并导致后续加载超时或需要很长时间才能加载所有必要数据。据我所知,当前函数当前正在使用 find 方法 find_by_batches 可能对此更好,但我不确定这是如何实现的我当前的查找是在数组键上运行。我的意图仍然是获取数据,但可能对其进行批处理,以便加载速度更快。下面是嵌套数组的片段和示例。该问题发生在嵌套的消费者散列中,该散列具有许多具有通信者 key/values.

的个人消费者记录
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

Group : {
   key1: value
   key2: value
   key3: value 
   key4: value
   key5: value
}, 
 consumers: {
     {
       key:value
       key:value
       key:value
     },      
     {
       key:value
       key:value
       key:value
     }, etc...
   }
}

Jvillian 最初是正确的,我的发现不是问题,因为查询不会导致任何加载问题。在测试不同的循环之后,所有的时序都是相似的。问题与显示如此大的数据集有关。

分页利用 Kaminari 和 API-Pagination gem 解决了这个问题。利用以下代码,我可以将列表分成每页 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