我猜这个很简单,但我只是不确定如何谷歌。
我有一个带有Name列的User模型,其中name是一个小写字符串。我想配置我的模型,以便在检索名称值时调用string.titleize。
目前:
user = User.find(89)
user.name
==> 'larry david'
但我想要
user.name
==> 'Larry David'
我希望将此内置到模型中,这样我就不必在所有视图中调用'.titleize'
谢谢!
答案 0 :(得分:13)
覆盖Rails的属性访问器方法:
class User < ActiveRecord::Base
def name
read_attribute(:name).try(:titleize)
end
end
注意:当{name}属性为try
时,NoMethodError
方法会默默避免nil
异常。
答案 1 :(得分:2)
如果您只关注为什么不覆盖to_s
模型中User
方法的观点?
def to_s
self.name.titleize
end
然后在视图中<h1><%= @user %></h1>
将被标题化。