I need to get the path to the file on disk which is using ActiveStorage
. The file is stored locally.
When I was using paperclip, I used the path
method on the attachment which returned the full path.
Example:
user.avatar.path
While looking at the Active Storage Docs, it looked like rails_blob_path
would do the trick. After looking at what it returned though, it does not provide the path to the document. Thus, it returns this error:
No such file or directory @ rb_sysopen -
Background
I need the path to the document because I am using the combine_pdf gem in order to combine multiple pdfs into a single pdf.
For the paperclip implementation, I iterated through the full_paths of the selected pdf attachments and load
them into the combined pdf:
attachment_paths.each {|att_path| report << CombinePDF.load(att_path)}
Just use:
ActiveStorage::Blob.service.send(:path_for, user.avatar.key)
You can do something like this on your model:
class User < ApplicationRecord
has_one_attached :avatar
def avatar_on_disk
ActiveStorage::Blob.service.send(:path_for, avatar.key)
end
end