Ruby on rails 在轨道上使用回形针设置原始图像的路径? 形势

Ruby on rails 在轨道上使用回形针设置原始图像的路径? 形势,ruby-on-rails,ruby,paperclip,Ruby On Rails,Ruby,Paperclip,我有一个简单的模型,附带了一个使用回形针的图像,它有两种处理过的样式(缩略图、完整、功能)。此时,它可以正常工作,并为/public/assets/foo/中的每个对象创建一个目录结构,其中包含原始、缩略图、完整和功能的子目录 问题 我不希望原始(高分辨率)图像被曝光,以供用户获取。因此,我希望有一种方法可以指定一个不同的路径,将原件存储在/public/之外的某个地方。理想情况下,回形针应该仍然能够使用原始图像作为源重新处理样式,就像它目前所做的那样 我也愿意接受其他建议,让外部用户无法访问原

我有一个简单的模型,附带了一个使用回形针的图像,它有两种处理过的样式(缩略图、完整、功能)。此时,它可以正常工作,并为
/public/assets/foo/
中的每个对象创建一个目录结构,其中包含原始、缩略图、完整和功能的子目录

问题 我不希望原始(高分辨率)图像被曝光,以供用户获取。因此,我希望有一种方法可以指定一个不同的路径,将原件存储在
/public/
之外的某个地方。理想情况下,回形针应该仍然能够使用原始图像作为源重新处理样式,就像它目前所做的那样


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

如果可以接受,您可以通过设置默认样式跳过保存原件

  has_attached_file :image,
                    :styles => { :normal => "800x600>" },
                    :default_style => :normal
如果没有,并且您希望保留原始文件,如果您使用的是apache,则可以使用.htaccess文件来限制对原始目录的访问

<FilesMatch "^\.(jpe?g|gif|png)$">
   Order allow,deny
   Deny from all
</Files>

命令允许,拒绝
全盘否定

我建议使用自定义插值,将原始文件放在公共目录之外。大概是这样的:


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

has_attached_file :image, :path => ":rails_root/:maybe_public/:attachment..."

这将把您的原始文件保存在一个不可公开访问的目录中进行保护,但仍然允许访问回形针。它会将您的缩略图保存在公共目录中,供标准访问。

谢谢,这正是我想要的。实际上,我必须从Github获取最新的回形针,因为我过时的版本还没有插值方法:)我已经:完全设置为默认样式。它不会跳过保存原件,它只是设置
@foo.image.url
返回的样式,不带参数,默认为:original。这样你就不必一直用
@foo.image.url(:full)
指定样式了。你也可以简单地将:processors=>[]传递给has_attached_file调用吗?