有没有一种方法可以序列化ActiveRecord Relation对象而不加载它?

尼古拉

我试图根据用户选择的参数将数据库行导出为CSV。这些导出可能需要一段时间,因此我正在使用delay_job处理它们并将它们上传到S3。我的控制器如下所示:

def search
  @books = visible_books.includes(:publisher)
  @books = @books.where(contract_id: assigned_contract_ids) if assigned_subscriber.present?
  @books = @books.unifilter(params, to_cents: ['total_cost'])

  respond_to do |format|
    format.json { export }
    format.js { @books.paginate(params[:page], per: 50) }
  end
end

def export
  exportable_books = ExportableBooks.new(@books)
  exportable_books.delay.upload
  render json: { id: exportable_books.id }
end

不幸的是,@books最多可以容纳10.000行,并且当将它们序列化为YAML进行delay_job时,所有这些行都将加载到内存中,然后以YAML格式写入数据库。有办法避免这种情况吗?

斯派克曼

问题是delay需要序列化exportable_books到数据库中并exportable_books保存的完整结果集@books

取而代之的是,您应该ExportableBooks仅使用paramsand进行初始化assigned_contract_ids,因为序列化时它要小得多。然后在upload方法中运行查询

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ObjectStream:有没有一种方法可以读取序列化对象作为属性映射?

来自分类Dev

有没有一种方法可以在序列化时自动初始化空子对象?

来自分类Dev

有没有一种方法可以创建一个使用marshal对对象进行反序列化的实例方法?

来自分类Dev

有没有一种方法可以通过启动过程将可序列化的对象传递给PowerShell脚本?

来自分类Dev

有没有一种方法可以浅复制现有文件对象?

来自分类Dev

有没有一种方法可以修改RLMObject而不保留它?

来自分类Dev

有没有一种方法可以发布dacpac的版本而不发布它?

来自分类Dev

有没有一种方法可以访问对象中的对象?

来自分类Dev

有没有一种方法可以在重新加载时保存画布的状态?

来自分类Dev

有没有一种方法可以减少雪管加载时间?

来自分类Dev

有没有一种方法可以自动在Paraview中加载csv文件?

来自分类Dev

有没有一种方法可以同时设置对象的值和属性?

来自分类Dev

有没有一种方法可以打印对象的位表示?

来自分类Dev

有没有一种方法可以从ListItem获取Folder对象?

来自分类Dev

有没有一种方法可以在PHP中创建匿名对象

来自分类Dev

有没有一种方法可以使用IPython隐藏显示的对象?

来自分类Dev

有没有一种方法可以使Python列表需要某个对象?

来自分类Dev

有没有一种方法可以遍历JavaScript中可能包含的对象?

来自分类Dev

有没有一种方法可以从ListItem获取Folder对象?

来自分类Dev

有没有一种方法可以将对象包装为ConcurrentObject?

来自分类Dev

有没有一种方法可以将流引用传递给对象?

来自分类Dev

如何序列化以一种方法创建的所有 ArrayList 对象?

来自分类Dev

有没有一种方法可以在ES5之前创建没有原型的对象?

来自分类Dev

在Typescript中:有没有一种方法可以内联初始化对象或数组(具有某种接口类型)?

来自分类Dev

有没有一种内置的方法来检测序列化的Java对象是否缺少字段?

来自分类Dev

有没有一种方法可以强制子值具有与对象的键匹配的字段?

来自分类Dev

在Python中,有没有一种方法可以找到具有特定属性的对象?

来自分类Dev

有没有一种方法可以使用HashWithIndifferentAccess序列化ActiveRecord的JSON属性?

来自分类Dev

有没有一种方法可以选择与另一个对象相关的数组对象?

Related 相关文章

  1. 1

    ObjectStream:有没有一种方法可以读取序列化对象作为属性映射?

  2. 2

    有没有一种方法可以在序列化时自动初始化空子对象?

  3. 3

    有没有一种方法可以创建一个使用marshal对对象进行反序列化的实例方法?

  4. 4

    有没有一种方法可以通过启动过程将可序列化的对象传递给PowerShell脚本?

  5. 5

    有没有一种方法可以浅复制现有文件对象?

  6. 6

    有没有一种方法可以修改RLMObject而不保留它?

  7. 7

    有没有一种方法可以发布dacpac的版本而不发布它?

  8. 8

    有没有一种方法可以访问对象中的对象?

  9. 9

    有没有一种方法可以在重新加载时保存画布的状态?

  10. 10

    有没有一种方法可以减少雪管加载时间?

  11. 11

    有没有一种方法可以自动在Paraview中加载csv文件?

  12. 12

    有没有一种方法可以同时设置对象的值和属性?

  13. 13

    有没有一种方法可以打印对象的位表示?

  14. 14

    有没有一种方法可以从ListItem获取Folder对象?

  15. 15

    有没有一种方法可以在PHP中创建匿名对象

  16. 16

    有没有一种方法可以使用IPython隐藏显示的对象?

  17. 17

    有没有一种方法可以使Python列表需要某个对象?

  18. 18

    有没有一种方法可以遍历JavaScript中可能包含的对象?

  19. 19

    有没有一种方法可以从ListItem获取Folder对象?

  20. 20

    有没有一种方法可以将对象包装为ConcurrentObject?

  21. 21

    有没有一种方法可以将流引用传递给对象?

  22. 22

    如何序列化以一种方法创建的所有 ArrayList 对象?

  23. 23

    有没有一种方法可以在ES5之前创建没有原型的对象?

  24. 24

    在Typescript中:有没有一种方法可以内联初始化对象或数组(具有某种接口类型)?

  25. 25

    有没有一种内置的方法来检测序列化的Java对象是否缺少字段?

  26. 26

    有没有一种方法可以强制子值具有与对象的键匹配的字段?

  27. 27

    在Python中,有没有一种方法可以找到具有特定属性的对象?

  28. 28

    有没有一种方法可以使用HashWithIndifferentAccess序列化ActiveRecord的JSON属性?

  29. 29

    有没有一种方法可以选择与另一个对象相关的数组对象?

热门标签

归档