7

我正在创建一个 Rails 应用程序,它允许管理员上传可选择公开显示的照片。对于上传/存储过程,我使用 Carrierwave gem 以及 Fog gem 和 S3。问题是,为了让这一切正常工作,我必须公开上传到 s3 存储桶的每个文件。有没有办法在逐个文件的基础上使文件公开/私有?此外,如果这种逐个文件的粒度是可能的,它是否可以扩展到图像版本(由自动 Carrierwave 调整大小创建)?

目前,我的载波初始化程序中有以下行:

  config.fog_public = true
4

2 回答 2

7

实际上,在 Carrierwave 中它非常简单。

你可以这样做:

class PrivateUploader < StandardUploader  

  @fog_public = false

或者(未经测试,但应该可以完美运行)这个:

class PrivateUploader < StandardUploader  


  def fog_public
    if local_condition
      true
    else
      false
    end
  end

:-)

我还没有尝试过 DragonFly,但现在 Carrierwave 在过去 2 个月里已经解决了几个问题,它比我见过的任何其他东西都要好得多。灵活无比。

//哑光

于 2011-08-06T08:21:01.480 回答
5

只需让您的上传器类覆盖基类。我今天也把头发扯掉了.. :(这对我有用:

使用 Carrierwave 0.8.0(2013 年 5 月)/app/uploaders/whatever_uploader.rb

class WhateverUploader < CarrierWave::Uploader::Base
  def fog_public
    true # or false
  end
end
于 2013-05-29T12:08:15.090 回答