How are folk handling ownership of an ActiveStorage::Attachment?
Hi all,
With carrierwave etc it was easy enough to associate a User with an uploaded image. Things are a bit different with ActiveStorage::Attachment & Blobs.
For example, suppose I have aPark
models that has_many_attached :images
. I also have a User
model and any user can upload an image. I want folk to be able to delete their own images that they've uploaded but not other peoples images.
I can see two ways of doing this:
- Create a separate model, say
Image
thatbelongs_to :user
andhas_one_attached :picture
and thenPark
instead of having has_many_attachments, justhas_many :images
- Make use of the fact that ActiveStorage::Blob has many ActiveStorage::Attachment and do the ownership of a blob by having two ActiveStorage::Attachment records: One for the Park and the other for the User.
How are people handling ownership of uploaded blobs? Are there other ways of doing this? Is there a best practice around this? Has Chris done a video on this that I've not yet seen?
Thanks all!
Rick
Add the PutObjectAcl permission, which I did via the IAM Management Console. I've created a PR to add this info to the Active Storage guide.
No migration or new service configuration is actually needed. You just need to make the existing objects public, which you can do from the S3 UI (if you don't have many) or with a script. Then you can continue using the same service with public: true added.
Interesting. I don't use S3.
What would a more generic solution be that would apply equally to other storage options, including just local file storage?