2011-06-30 3 views
3

誰かが写真を追加していない場合、デフォルトのアバターイメージを表示したいと思います。私は、モデルまたはヘルパーでカスタムゲッターを行う必要があると仮定しています。Ruby on Rails:カスタムゲッターまたはカスタムヘルパー

def avatar_url 
    "default_url" unless self.avatar 
end 
+0

あなたがcarrierwave宝石を使用していますか? –

答えて

6

存在を検出するためにread_attributeメソッドを使用します。私はゲッターをした場合

が、それは次のようになります。

def avatar 
    read_attribute("avatar") || default_avatar 
end 
+0

これについて質問します。アバターはデータベースの実際の値です。もしあればデフォルトを返したavatar_urlのモデルに追加のプロパティを追加します。それ以外の場合は文字列値を返します。 – Jhorra

+0

これはこのアバターメソッドの動作です。属性への呼び出しを代行受信し、それがnilでない場合はデータベース値を返し、そうでない場合は 'default_avatar'を返します。 –

0

もう1つの解決策は、移行を使用してデータベースレベルでデフォルトを設定することです。そうすれば、デフォルトの状況に特別なことをする必要はありません。

change_table :users do |t| 
    t.string :avatar, :default => 'default_url' 
end 

移行は次のようになりますhttp://guides.rubyonrails.org/migrations.html