в рельсах, как назвать строку каждый раз, когда вызывается user.name? - PullRequest
1 голос
/ 06 января 2012

Я предполагаю, что это очень просто, но я просто не знаю, как Google для этого.

У меня есть модель User со столбцом Name, где name - строка в нижнем регистре.Я хочу настроить мою модель так, чтобы string.titleize вызывался каждый раз, когда извлекается значение имени.

в настоящее время:

user = User.find(89)
user.name
==> 'larry david'

но я хочу

user.name
==> 'Larry David'

Я хочу, чтобы это было встроено в модель, чтобы мне не приходилось вызывать '.titleize' ввсе мои взгляды

спасибо!

Ответы [ 2 ]

13 голосов
/ 06 января 2012

Метод доступа к атрибуту Override Rails:

class User < ActiveRecord::Base
  def name
     read_attribute(:name).try(:titleize)
  end
end

Примечание: Метод try автоматически исключает исключение NoMethodError, когда атрибут имени равен nil.

2 голосов
/ 06 января 2012

Если вас интересуют только представления, почему бы не переопределить метод to_s в вашей модели User?

def to_s
  self.name.titleize
end

Тогда в представлениях <h1><%= @user %></h1> будет назван.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...