Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get path to ActiveStorage file on disk

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)} 
like image 840
Neil Avatar asked May 14 '18 22:05

Neil


Video Answer


1 Answers

Just use:

ActiveStorage::Blob.service.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.path_for(avatar.key)   end end 
like image 108
vitormil Avatar answered Sep 20 '22 17:09

vitormil