Modifier un enregistrement ou le créer s’il n’existe pas avec Ruby On Rails ( first_or_initialize )

Modifier un enregistrement ou le créer s’il n’existe pas avec Ruby On Rails ( first_or_initialize )

Avec Ruby On Rails, vous souhaitez mettre à jour un enregistrement ou le créer s’il n’existe pas dans la table, le tout en une ligne ? Une fonctionnalité utile, par exemple, dans un script d’importation. Pas de problème, il y’a une méthode pour ça ! Et celle-ci se nomme first_or_initialize.

ruby-on-rails-tutoriel

La méthode first_or_initialize

La méthode first_or_initialize va permettre de sélectionner le premier enregistrement de la table correspondant à votre requête. Si aucun enregistrement ne correspond, alors la méthode initialisera votre variable, comme si vous utilisiez Modèle.new.

Exemple

utilisateur = Utilisateur.find_by_id(1).first_or_initialize
utilisateur.nom = "Bertrand"
utilisateur.save

Dans cet exemple, la requête va charger l’utilisateur ayant l’id 1. Si cet utilisateur n’existe pas, alors Rails initialisera la variable utilisateur comme si vous aviez utilisé Utilisateur.new. Ensuite, on change l’attribut nom et on enregistre le changement ou la création avec la méthode save.

A noter qu’une variante avec enregistrement immédiat est également disponible avec la méthode first_or_create.

Article écrit par Bertrand Bourgy

Diplômé de la Louvain School of Management, je suis maître-assistant en sciences économiques et informatiques à la Haute Ecole Provinciale de Hainaut Condorcet. Je travaille également en tant qu'attaché à l'innovation et au développement dans la même Haute Ecole.

Quelque chose à dire? Réagissez!

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *