Je vous suggère de créer une méthode secondaire avec votre formatteurs personnalisés.
class Person
def formatted_name
name.capitalize
end
end
Ceci est une meilleure solution par rapport à la mise en œuvre de l'écrasement par défaut parce setter et getter peut appeler lorsque la mise à jour/écriture/sauvegarde de l'enregistrement à la base de données. Je me souviens d'une fois où j'ai écrasé l'implémentation par défaut d'un attribut et chaque fois qu'un enregistrement a été enregistré, l'attribut a été mis à jour avec la valeur formatée.
Si vous voulez suivre cette voie, vous pouvez utiliser alias_method_chain
ou profiter de l'héritage y compris un module externe.
class Person
def name_with_formatter
name_without_formatter.capitalize
end
alias_method_chain :name, :formatter
end
vous pouvez aussi remplacer le nom et appeler read_attribute(:name)
à partir de votre méthode personnalisée.
def name
read_attribute(:name).capitalize
end
def name
self[:name].capitalize
end
Encore une fois, ne faites pas cela. Allez-y et créez une méthode personnalisée.
Pourquoi ne pas recommander votre dernière suggestion? def nom self [: nom] .capitalize fin Look élégant, c'est juste un lecteur d'attributs. Quel est le problème? – user16455
Principalement parce que certains plugins se fonde sur le nom, d'autres appelle self [: nom]. Vous pourriez vous retrouver avec des valeurs incohérentes. –
Il y a un problème avec le chaînage des méthodes dans l'enregistrement actif http://onehub.com/blog/posts/decorating-activerecord-accessor-methods/ – ahmy