このクラスがあり、アクティブストレージを使用しています
class MaterialsUpload < ApplicationRecord
has_one_attached :csv_file
end
これは添付ファイルです
#<ActiveStorage::Attached::One:0x007ff1f0be9e90
@dependent=:purge_later,
@name="csv_file",
@record=
#<MaterialsUpload:0x007ff1f0c604f0
id: 3,
success: 0,
errors_list: [],
total: 0,
created_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00,
updated_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00>>
このようなことができるようにデータを読み取る方法はありますか?
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
これは別のオプションかもしれないと思います(ディスク上でローカルの場合)。 this answerのコードを使用しました
file_path = ActiveStorage::Blob.service.send(:path_for, materials_upload.csv_file.key)
CSV.foreach file_path, headers: true do
# ...
end