Point d’exclamation dans les méthodes Ruby et ActiveRecord

Petite subtilité du langage Ruby qui est interprétée différemment dans ActiveRecord : le point d’exclamation. En Ruby, une méthode que l’on appelle sans point d’exclamation ne va pas modifier l’objet passé en paramètre :

irb(main):001:0> ligne = 'ma phrase avec un espace en fin de ligne '
=> "ma phrase avec un espace en fin de ligne "
irb(main):002:0> ligne.strip
=> "ma phrase avec un espace en fin de ligne"
irb(main):003:0> ligne
=> "ma phrase avec un espace en fin de ligne "

La méthode a donc édité l’objet puis a retourné l’objet édité sans modifier l’objet original. En appelant cette méthode avec un point d’exclamation, l’objet original est édité et sauvé :

irb(main):004:0> ligne.strip!
=> "ma phrase avec un espace en fin de ligne"
irb(main):005:0> ligne
=> "ma phrase avec un espace en fin de ligne"

Toutefois, l’utilisation du point d’exclamation dans ActiveRecord est différente puisque ActiveRecord va lever une exception en cas de problème lors de l’exécution de la commande appelée avec un point d’exclamation ou se contenter de returner true ou false si la méthode est appelée sans point d’exclamation.

Articles relatifs



Ajouter un commentaire

Attention : les commentaires sont modérés, ils n'apparaissent donc pas tout de suite.


Creative Commons License