Shp*_*ord 3 csv ruby-on-rails background-process ruby-on-rails-3
我们允许用户以CSV格式下载所有数据,但我们发现对于很多用户(拥有大量数据)我们确实需要在后台生成CSV文件,然后为他们提供链接稍后下载.
我知道如何在视图中动态生成CSV文件,但我不完全清楚在后台任务中生成它的最佳方法.
我目前正在使用csv_builder在视图中生成CSV文件...所以能够仍然使用它并且以某种方式将其直接输出到CSV文件中然后我可以使用回形针上传到S3,这真是太棒了.但那可能太牵强了.
我有类似的问题,但使用内置的rails CSV库而不是csv_builder(我对此一无所知).
在我的模型中,我有一个生成csv并在s3上保存为paerclip附件的方法:
def csv_export
@entries = self.entries
@filename = "naming my file"
CSV.open("#{Rails.root.to_s}/tmp/#{@filename}", "wb") do |csv| #creates a tempfile csv
csv << ["Date & Time", "Name", "Email"] #creates the header
@entries.each do |e|
csv << [e.created_at, e.name, e.email] #create new line for each item in collection
end
end
self.update_attribute(:csv_report, File.open("#{Rails.root.to_s}/tmp/#{@filename}"))
#saves tempfile as paperclip attachment
end
Run Code Online (Sandbox Code Playgroud)
我在rake任务中调用此方法,该任务卸载到延迟的作业工作者.
所以在rake任务中: Object.delay.csv_export
| 归档时间: |
|
| 查看次数: |
3770 次 |
| 最近记录: |