42

を使用しているディスク上のファイルへのパスを取得する必要がありますActiveStorage。ファイルはローカルに保存されます。

ペーパークリップを使用していたときはpath、フルパスを返す添付ファイルのメソッドを使用しました。

例:

user.avatar.path

Active Storage Docsを見ていると、うまくいくように見えましrails_blob_pathた。ただし、返されたものを見た後、ドキュメントへのパスは提供されません。したがって、次のエラーが返されます。

そのようなファイルまたはディレクトリはありません @ rb_sysopen -

バックグラウンド

複数のpdfを単一のpdfに結合するために combine_pdf gemを使用しているため、ドキュメントへのパスが必要です。

ペーパークリップの実装では、選択した pdf 添付ファイルの full_paths を反復処理し、loadそれらを組み合わせた pdf にしました。

attachment_paths.each {|att_path| report << CombinePDF.load(att_path)}
4

4 に答える 4

8

添付ファイルをローカル ディレクトリにダウンロードして処理できます。

モデルに次のものがあるとします。

has_one_attached :pdf_attachment

以下を定義できます。

def process_attachment      
   # Download the attached file in temp dir
   pdf_attachment_path = "#{Dir.tmpdir}/#{pdf_attachment.filename}"
   File.open(pdf_attachment_path, 'wb') do |file|
       file.write(pdf_attachment.download)
   end   

   # process the downloaded file
   # ...
end
于 2018-06-13T13:35:35.693 に答える