Rails使用活动存储读取csv文件数据

我有这个课程,我正在使用主动存储

class MaterialsUpload < ApplicationRecord has_one_attached :csv_file end 

这是附件

 #<ActiveStorage::Attached::One:0x007ff1f0be9e90 @dependent=:purge_later, @name="csv_file", @record= #> 

有没有办法可以读取数据,所以我可以做这样的事情

 string = materials_upload.csv_file.read CSV.parse(csv_string, headers: true) do |row| # do something end 

使用download来获取文件的内容:

 CSV.parse(materials_upload.csv_file.download, headers: true) do |row| # ... end 

我认为这可能是另一种选择(当它在磁盘上本地时)。 我使用了这个答案的代码

 file_path = ActiveStorage::Blob.service.send(:path_for, materials_upload.csv_file.key) CSV.foreach file_path, headers: true do # ... end 

上传后,您可以使用CSV :: Table lib将CSV文件读入HTML表格:

 def show @csv_data = CSV.open('uploaded_file.csv', headers: true).read end 

视图示例:

  <% @csv_data.headers.each do |header| %>  <% end %>  <% @csv_data.each do |row| %>  <% row.each do |value| %>  <% end %>  <% end %> 
<%= header %>
<%= value[1] %>