2012-02-21 5 views
2

私は以下のモデルを持っていると私のファイルがそうのようにアップロードされたい:ペーパークリップ(サムネイル/元)

/images/1/123abc_name_original.jpg 
/images/1/123abc_name_medium.jpg 
/images/1/123abc_name_thumb.jpg 

私は以下のように使用した場合、:ハッシュがありますファイルごとに異なります。私はこれを同じにして、私の資産テーブルのデータベースに保存できるようにしたいと思います。私はファイルのセキュリティについて心配していません。

コード:ペーパークリップは、異なるタイムスタンプを取る、さまざまなスタイルのために

Paperclip.interpolates :my_hash do |attachment, style| 
    Time.now.to_i.to_s 
end 

Paperclip.interpolates :global_path do |attachment, style| 
    attachment.instance.assetable.global_id 
    end 

    Paperclip.interpolates :val do |attachment, style| 
    jt=:basename 
    Digest::MD5.hexdigest(jt) 
    end 


has_attached_file :asset, 
    :hash_secret => "jtsomething", 
    :url => "/images/:global_path/:hash_:basename_:style.:extension", 
    :path => UPLOAD_PATH + "/:global_path/:hash_:basename_:style.:extension", 
    :styles => { :medium => "200x200>", :thumb => "75x75>", :bigthumb => "125x125" 

    } 

でも一貫したタイムスタンプは、このような素晴らしいことです。それは一貫しているはずです。

私はおそらくこれを行う方法について何か不足しています。

THX

+0

ハッシュ補間の定義は何ですか? – James

+0

デフォルトでは:paperclipで動作するハッシュ値(:hash_secret値を使用)があります。上書きしても、異なるインスタンスには異なる値が設定されます(後で説明するタイムスタンプの例と同様)。これまでに経験したことのある人を見つけることを願っています。 – timpone

+0

あなたは解決しようとしている問題は何ですか?パスのディレクトリ構造にオブジェクトIDがある場合、ファイル名にハッシュを挿入する必要はありません。 – Winfield

答えて

0

デフォルト:hash_dataは次のとおりです。

:hash_data=>":class/:attachment/:id/:style/:updated_at"

ので、このオプションを無効にし、:style:updated_atを削除します。次に、あなたのハッシュは異なるスタイルに対して同じ値を生成するはずです。

関連する問題