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