2011-07-18 13 views
5

私は管理者が公開されている写真をアップロードすることができます。アップロード/保存プロセスでは、私はCarrierwave gemとFog gemとS3を使用しています。問題は、これをすべて有効にするには、s3バケットにアップロードされたすべてのファイルを公開する必要があるということです。ファイルをファイルごとに公開/非公開にする方法はありますか?また、このファイル単位の細分性が可能な場合、イメージのバージョン(Carrierwaveの自動サイズ変更によって作成されたもの)まで拡張できますか?FogとCarrierwaveでアップロードされたファイルの細かい「公開」設定

現在、私は私のcarrierwave初期化子に次の行を持っている:

config.fog_public = true 
+1

を使用してこれはおそらく長いです - ほとんどのRailsアップローダで欠落している機能がありますが、これまでにないレベルのカスタマイズを可能にし、それだけでも可能なので、FreeBSDをお勧めします。 – kain

+0

DragonFlyを簡単に見てみると、 – dcb

答えて

7

は実際には、Carrierwaveで死んで簡単です。この

class PrivateUploader < StandardUploader 

    @fog_public = false 

か(未テストをしかし、完璧に動作するはずです):

class PrivateUploader < StandardUploader 


    def fog_public 
    if local_condition 
     true 
    else 
     false 
    end 
    end 

:-)

私はドラゴンフライを試してみましたが、今はしていないが

あなたはこれを行うことができますCarrierwaveでは過去2ヶ月間にいくつかの問題が修正されていますが、それは他の何ものよりも優れています。非常に柔軟性があります。

// matt

+0

これまでのセットアップでは、これを達成するためのコールバックを保存していました。元のバージョンをprivateに設定して残りをpuにしましたblic。このコードは私の仕事を大いに簡素化するのを助けました。具体的には、アップロードのすべてのバージョンをオリジナル以外のものにするために、私は上記のコードの 'local_condition'として'!self.version_name.nil? 'を使用します。 –

+0

@dcbこれを受け入れられた回答としてマークする必要があります –

5

アップロードクラスが基本クラスをオーバーライドするようにしてください。私は今日も私の髪を引き裂いた... :(これが私の仕事:

(2013年5月中)Carrierwave 0.8.0に /app/uploaders/whatever_uploader.rb

class WhateverUploader < CarrierWave::Uploader::Base 
    def fog_public 
    true # or false 
    end 
end 
+1

bingo bango bongo – diclophis

関連する問題