誰かが写真を追加していない場合、デフォルトのアバターイメージを表示したいと思います。私は、モデルまたはヘルパーでカスタムゲッターを行う必要があると仮定しています。Ruby on Rails:カスタムゲッターまたはカスタムヘルパー
def avatar_url
"default_url" unless self.avatar
end
誰かが写真を追加していない場合、デフォルトのアバターイメージを表示したいと思います。私は、モデルまたはヘルパーでカスタムゲッターを行う必要があると仮定しています。Ruby on Rails:カスタムゲッターまたはカスタムヘルパー
def avatar_url
"default_url" unless self.avatar
end
存在を検出するためにread_attribute
メソッドを使用します。私はゲッターをした場合
が、それは次のようになります。
def avatar
read_attribute("avatar") || default_avatar
end
これについて質問します。アバターはデータベースの実際の値です。もしあればデフォルトを返したavatar_urlのモデルに追加のプロパティを追加します。それ以外の場合は文字列値を返します。 – Jhorra
これはこのアバターメソッドの動作です。属性への呼び出しを代行受信し、それがnilでない場合はデータベース値を返し、そうでない場合は 'default_avatar'を返します。 –
もう1つの解決策は、移行を使用してデータベースレベルでデフォルトを設定することです。そうすれば、デフォルトの状況に特別なことをする必要はありません。
change_table :users do |t|
t.string :avatar, :default => 'default_url'
end
:
移行は次のようになりますhttp://guides.rubyonrails.org/migrations.html
あなたがcarrierwave宝石を使用していますか? –