Je suis en train de créer une URL de vanité dans un rappel basé sur le nom d'un utilisateur avec la méthode suivante:Comment définir une variable locale
before_create :generate_vanity_url
def generate_vanity_url
vanity_url = self.name
vanity_url.gsub!(/[^\w]/,"")
end
Le problème qui se produit est que non seulement la VANITY_URL variable devient affecté par le gsub! méthode, mais aussi l'attribut name. Qu'est-ce que je fais mal?
Ps. la méthode est plus étendue, mais je l'ai raccourcie pour des raisons de clarté
Vous avez raison, mais il n'y a aucune leçon à apprendre en passant à 'gsub'. COW est une caractéristique importante de Ruby qui mérite d'être connue. –
Que voulez-vous dire par «aucune leçon apprise»? 'gsub!' n'aurait jamais dû être utilisé en premier lieu. – naomik
Dans ce cas - peut-être. Mais @yor mazar l'utilisera un jour, je pense que ça vaut la peine de savoir quels effets secondaires il peut avoir. –