ディスク上のActiveStorageファイルへのパスを取得する 質問する

ディスク上のActiveStorageファイルへのパスを取得する 質問する

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

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

例:

user.avatar.path

を見ながらアクティブストレージドキュメント、これでうまくいくように見えましたrails_blob_path。しかし、返されたものを見ると、ドキュメントへのパスが提供されていません。そのため、次のエラーが返されます。

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

背景

ドキュメントへのパスが必要なのは、結合_pdf複数の PDF を 1 つの PDF に結合するには、gem を使用します。

ペーパークリップの実装では、選択した PDF 添付ファイルの full_paths を反復処理して、load結合された PDF に取り込みました。

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

ベストアンサー1

使用:

ActiveStorage::Blob.service.path_for(user.avatar.key)

モデルでは次のようなことができます:

class User < ApplicationRecord
  has_one_attached :avatar

  def avatar_on_disk
    ActiveStorage::Blob.service.path_for(avatar.key)
  end
end

おすすめ記事