2016-07-19 4 views
0

私は、私のレールプロジェクトでユーザーのアバターのためにCarrierWaveアップローダーを使用しています。写真をアップロードしていないユーザーのために、現在デフォルトのURLを4種類からランダムに選択しています。 CarrierWave READMEで示唆したように、私はこれとして、それを実装しました:CarrierWaveアップローダーの親モデルの属性を使用したデフォルト画像

class UserAvatarUploader < ImageUploader 
    def default_url(*args) 
    ActionController::Base.helpers.asset_path("avatars/default_avatar_#{rand(4).to_s}.png") 
    end 
end 

それはランダム関数であるので、ここでの問題は、ユーザーのアバターがページがリロードされるたびに変化することです。理想的には、ユーザのユーザ名から番号を派生して、デフォルトのアバタが一貫しているようにしたいと考えています。どうすればいい?前もって感謝します!

+0

'rand'を使用するのではなく、' user.id'や何かを使って一意にすることができますか? – uday

+0

@uDaYはい、うまくいくでしょう。基本的には 'default_url'メソッドの中からユーザー情報を取得したいだけですが、 –

答えて

0

私はそれを解決しました。私はdefault_urlメソッド内からユーザー情報を取得する方法を見つけることができなかったので、本質的に私は立ち往生しました。私は後で変数modelが利用可能であり、それがユーザを参照していることを知りました。最終的なコードは次のとおりです。

class UserAvatarUploader < ImageUploader 
    def default_url(*args) 
    number = model.id % 4 
    ActionController::Base.helpers.asset_path("avatars/default_avatar_#{number}.png") 
    end 
end 
関連する問題