【问题标题】:Rails PaperClip: How can you convert a public_read file to private?Rails PaperClip:如何将 public_read 文件转换为私有文件?
【发布时间】:2018-02-15 13:59:06
【问题描述】:
【问题讨论】:
标签:
ruby-on-rails
amazon-s3
paperclip
【解决方案1】:
更新所有对象的权限比重新上传它们要容易得多。
我能想到的两种方法:
-
Paperclip 有一个使用 s3 存储的附件的 set_permissions 方法,因此您可以遍历现有模型并在每条记录上调用类似 user.avatar.set_permissions(:private) 的内容。
-
s3cmd 之类的工具也非常适合完成此任务。一旦安装,这样的命令就可以做到:
s3cmd setacl --acl-private --recursive --verbose s3://your_bucket/paperclip/path
更新:set_permissions 没有按照您的想法做;它在创建对象时使用,但不更新对象。而是使用回形针 s3_object 方法,然后使用 aws-sdk api 更新对象:
user.avatar.s3_object.acl.put(acl: 'private')