2011-06-30 109 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

這就是這個頭像方法所做的。它攔截對該屬性的調用,並返回數據庫值,如果它不是零,否則返回'default_avatar'。 –

0

另一種可能的解決方案是使用遷移在數據庫級別設置默認值。這樣你就不必爲缺省情況做任何特殊的事情。

遷移可能看起來像:

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

來源:http://guides.rubyonrails.org/migrations.html