Un exemple de ce dont je parle:Remplacer les méthodes d'attributs ActiveRecord
class Person < ActiveRecord::Base
def name=(name)
super(name.capitalize)
end
def name
super().downcase # not sure why you'd do this; this is just an example
end
end
Cela semble fonctionner, mais je viens de lire la section sur le remplacement des méthodes d'attributs dans le ActiveRecord::Base docs, et il suggère d'utiliser la read_attribute
et write_attribute
des méthodes. Je pensais qu'il devait y avoir quelque chose de mal avec ce que je fais dans l'exemple ci-dessus; sinon, pourquoi béniraient-ils ces méthodes comme étant la «bonne façon» de remplacer les méthodes d'attributs? Ils forcent également un idiome beaucoup plus laid, donc il doit y avoir une bonne raison ...
Ma vraie question: Y at-il quelque chose de mal avec cet exemple?
Exactement ce dont j'avais besoin. Merci Aaron. – bong
Ce n'est plus vrai. Soit super ou ça marche maintenant. Cependant, je n'ai pas testé la notation de hachage. – tehgeekmeister
Dans les rails 3, la méthode de lecture spécifiée ici par Aaron fonctionne, mais l'auteur que l'affiche originale a spécifié (alimentant le nom à super) fonctionne bien, et IMHO est plus propre qu'écrire manuellement l'attribut comme Aaron suggère. – Batkins