Il peut être intéressant de surcharger des accesseurs, par exemple changer le comportement d'un attribut et éviter de changer tout son code.
Voici un petit exemple :
class Product < ActiveRecord::Base # setter, ici ce code ne sert à rien, car le comportement # par défaut est conservé, mais c'est pour l'exemple def name=(name) write_attribute(:name, name) end # getter, ici on ajoute " qui poutre" lors le l'appel du # nom du produit def name return read_attribute(:name) + " qui poutre" end end
Avant la surcharge :
p = Product.new(:name => "Banania en poudre")
p.name # retourne "Banania en poudre"
Après la surcharge :
p = Product.new(:name => "Banania en poudre")
p.name # retourne "Banania en poudre qui poutre"