Я предлагаю вам создать дополнительный метод с вашими пользовательскими форматерами.
class Person
def formatted_name
name.capitalize
end
end
Это лучшее решение по сравнению с перезаписью реализации по умолчанию, потому что setter и getters могут вызываться при обновлении / записи / сохранении записи в базе данных.
Я помню, как однажды я переписал реализацию атрибута по умолчанию и каждый раз, когда запись сохранялась, атрибут обновлялся с отформатированным значением.
Если вы хотите пойти по этому пути, вы можете использовать alias_method_chain
или воспользоваться преимуществами наследования, включая внешний модуль.
class Person
def name_with_formatter
name_without_formatter.capitalize
end
alias_method_chain :name, :formatter
end
Также вы можете перезаписать имя и вызвать read_attribute(:name)
из вашего собственного метода.
def name
read_attribute(:name).capitalize
end
def name
self[:name].capitalize
end
Опять же, не делайте этого. Вперед, создайте собственный метод.