在Rails中使用回形针设置原始图像的路径?

Mic*_*rds 8 ruby ruby-on-rails paperclip

情况

我有一个简单的模型与附加图像使用paperclip,它有几个处理样式(缩略图,完整,功能).此时它可以正常工作,并为每个对象创建一个目录结构/public/assets/foo/,包含原始,缩略图,完整和功能的子目录.

问题

我不希望公开原始(高分辨率)图像供用户使用.所以我希望有一种方法可以指定一个不同的路径来存储原件之外的某个地方/public/.理想情况下,回形针应该仍然能够使用原始图像作为源重新处理样式,就像当前一样.

我也愿意接受让外部用户无法访问原件的替代建议.这里最实用的解决方案是什么.谢谢.

jyu*_*rek 21

我建议使用自定义插值将原始文件放在公共目录之外.像这样的东西:


Paperclip.interpolates :maybe_public do |attachment, style|
  style == :original ? "private" : "public"
end

has_attached_file :image, :path => ":rails_root/:maybe_public/:attachment..."
Run Code Online (Sandbox Code Playgroud)

这会将您的原始文件保存在不可公开访问的目录中以进行保护,但仍允许Paperclip访问.它会将您的缩略图保留在公共目录中以进行标准访问.