这很奇怪,但我正在使用一个返回CSV::Table
对象的API库。
我现在正试图坚持使用回形针。
tempfile = Tempfile.new([report_id, '.csv'])
CSV.open(backup, 'w') do |writer|
csvtable = APICSVFETCHER.get_report(report_id)
csvtable.to_a.each do |row|
writer << row
end
end
# paperclip method archive
self.archive = File.open(backup)
self.save!
现在这很好,它有效。
但这似乎是一种将CSV对象保存到回形针文件的奇怪方法。
我想做类似的事情:
self.archive = CSV.parse(APICSVFETCHER.get_report(report_id))
self.save!
答案 0 :(得分:1)
你可以尝试这样的事情。使用具有回形针需要的附加属性和值的StringIO。
class FileFromString < StringIO
attr_accessor :original_filename, :content_type;
end
def fake_file report_id
ff = FileFromString.open(APICSVFETCHER.get_report(report_id).to_csv)
ff.original_filename = report_id.to_s
ff.content_type = 'text/csv'
ff
end
然后使用它。
self.archive = fake_file(report_id)
self.save!