我在像这样的控制器中创建了一个CSV下载器
format.csv do
@records = Model.all
headers['Content-Disposition'] = "attachment; filename=\"products.csv\""
headers['Content-Type'] ||= 'text/csv'
end
现在我想创建server sent events
以从中下载CSV以进行优化。我知道我可以使用ActionController::Live
在Rails中执行此操作,但我没有使用它的经验。
有人可以向我解释我如何
stream
sse
如果我的任何假设是错误的,请纠正我。帮助我以更好的方式做到这一点。谢谢。
答案 0 :(得分:0)
Mongoid会自动批量查询您的记录(here上的更多信息)
要将记录添加到CSV文件,您应该执行以下操作:
records = MyModel.all
# By default batch_size is 100, but you can modify it using .batch_size(x)
result = CSV.generate do |csv|
csv << ["attribute1", "attribute2", ...]
records.each do |r|
csv << [r.attribute1, r.attribute2, ...]
end
end
send_data result, filename: 'MyCsv.csv'
请记住send_data
是一个ActionController方法!