在rails中,如何在调用user.name时标题化字符串?

ist*_*tan 1 ruby-on-rails ruby-on-rails-3

我猜这一个很简单,但我只是不确定如何google它.

我有一个带有Name列的User模型,其中name是一个小写字符串.我想配置我的模型,以便在检索名称值时调用string.titleize.

目前:

user = User.find(89)
user.name
==> 'larry david'
Run Code Online (Sandbox Code Playgroud)

但我想要

user.name
==> 'Larry David'
Run Code Online (Sandbox Code Playgroud)

我希望这个内置到模型中,这样我就不必在所有视图中调用'.titleize'

谢谢!

Nic*_*ick 13

覆盖Rails的属性访问器方法:

class User < ActiveRecord::Base
  def name
     read_attribute(:name).try(:titleize)
  end
end
Run Code Online (Sandbox Code Playgroud)

注意:当name属性try为时,该方法将以静默方式避免NoMethodError异常nil.