L'essentiel de Ruby on Rails

Découvrir les validations

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Apprenez à valider les données saisies par l'utilisateur. Cela vous permettra de vérifier que les données reçues sont conformes à ce que vous attendez.
06:18

Transcription

Nous pouvons enregistrer des données en base de données, mais pour le moment, si l'utilisateur ne renseigne pas de titre ou de contenu ou un sujet de discussion, ce sujet sera, tout de même, enregistré. Cela est très dommageable car là, vous vous retrouveriez avec des sujets entièrement vides sur votre site. Comment faire pour empêcher cela ? Nous pouvons utiliser des validations. Les validations sont des méthodes spéciales en Ruby on Rails qui nous viennent, tout droit, de la classe Active Record. Comme nos modèles en héritent, ils peuvent, également, utiliser ces méthodes de validation. J'en profite pour vous montrer ce site Rails Guides qui est pour moi, un peu la bible de l'ensemble des fonctionnalités, pouvant être utilisées au niveau des Ruby on Rails. Je vous invite à y faire un tour et explorer un nombre de guides qui existent sur ce site. Une des validations les plus classiques, est la validation de la présence de l'attribut. Pour cela, nous utilisons la méthode Validate suivie du nom de l'attribut à valider sous forme de symbole, puis nous utilisons l'option Presence que nous mettons à True. Nous validons, ainsi, que toute création de catégories aura, forcément, l'attribut Name de rempli. Il existe d'autres options. Par exemple, length qui permet de définir un nombre de caractères maximal attendu pour l'attribut. Notez qu'il est, parfaitement, possible et recommandé d'ailleurs, de chaîner les différentes options de validation. Ainsi ici, par cette simple ligne, nous demanderons à ce que le titre de la donnée Profile fasse maximum 150 caractères, et soit toujours renseigné. Continuons en ajoutons des validations à nos autres modèles. Allons dans le modèle Topic. Nous allons ajouter une validation sur le titre, sur le booléen Published et sur le contenu. Remarquez comme length, pour le titre, peut accepter un range pour dire que le titre doit faire entre 5 et 150 caractères. Inclusion permet de dire que l'attribut Published devra, forcément, avoir l'une des deux valeurs True ou False. Cela évite par exemple, que nous ne nous retrouvions avec une valeur Published ne valant rien du tout, à savoir 1 000. Continuons avec les réponses. Les réponses ont, sensiblement, les mêmes attributs que les sujets de discussion. Comment faire pour valider le fait qu'une réponse est, forcément, rattachée à un sujet de discussion ? Nous pouvons utiliser toujours la méthode Validate suivie de Topic qui a, exactement, le même nom que l'association Belongs_to_topics. Puis encore, Presence: true. Notez que nous utilisons, ici, Topic et non pas Topic_Id pour que Rails comprenne qu'il s'agit ici, de valider la présence de l'objet associé. Terminons par les validations sur le modèle User. Pour le prénom et le nom, il n'y a rien de nouveau. Nous pouvons, cependant, remercier Anotate qui nous permet de voir qu'en base de données, le prénom et le nom sont déjà limités à 80 caractères. Notez d'ailleurs, ici, la différence entre les validations que nous sommes en train d'écrire dans notre code, et les limitations au niveau de notre base de données. Si nous n'écrivions pas ces validations ici, pour les prénoms et les noms, et qu'un utilisateur avait un prénom avec 150 caractères, nous aurions, alors, une erreur fatale au niveau de notre application puisque la base de données n'accepte pas plus de 80 caractères pour cet attribut. Du coup, l'avantage de mettre ces validations empêchera cette erreur fatale. Et nous aurons, plutôt, des messages agréables précisant à l'utilisateur comment corriger les données qu'il est en train de renseigner. Comme l'association entre les modèles User et Profile est un petit peu spéciale, puisque nous pouvons éditer les attributs de Profile au sein du formulaire User, nous pouvons préciser à Ruby on Rails, de valider les attributs de Profile chaque fois que nous sauvegardons un utilisateur. Pour ce faire, nous utilisons la méthode Validates_associative suivie du nom de l'association, à savoir Profile. Avant de tester l'effet de tout cela, nous allons modifier, un petit peu, la configuration de Simple Form pour que les erreurs affichées dans notre formulaire soient mieux formatées. Rendez-vous dans Config Initialisers SimpleForm Foundation .Rb. Nous allons remplacer, ici, la classe Error par des classes attendues par Foundation. À savoir Form error et Is visible. Profitons-en pour activer, également, Hint qui permettra d'afficher des messages d'information pour l'utilisateur pour pouvoir mieux renseigner les gens. Nous remplaçons, ici, le Tag :span par :p et Class :hint par Help-text. Répercutez ces modifications pour chaque occurrence de Hint et Error que vous voyez en-dessous dans le fichier Par exemple ici, il y en a d'autres. Enfin, tout en bas, remplacez, ici, Alert-box par Callout. Lorsque vous modifiez, ainsi, un fichier de configuration dans Config Initialisers, il vous faut relancer votre serveur Rails pour que les modifications soient prises en compte. Il nous faut encore modifier notre Controler Topic Answers. Lorsque des validations échouent, c'est-à-dire lorsque par exemple, le titre d'une réponse ne contient pas suffisamment de caractères, la méthode Save,ici présente, enverra la valeur Falls. Aussi, le code qui sera exécuté, sera celui qui se retrouvera, ici, dans le Else. Il nous faut juste modifier, ici, le Render new qui aurait pour effet de rendre la vue de l'action New qui n'existe plus. Nous allons, plutôt, rendre l'action Show du Controler Topics. Pour cela, nous écrivons le nom du contrôleur, slash, le nom de l'action. Nous pouvons faire la même chose au niveau du Controler Users et écrire, si jamais la validation échoue, nous rendons l'action Profile. Enfin, terminons en ajoutant un petit message d'information au niveau du formulaire, pour un sujet de discussion. Pour cela, renseignons l'option Hint suivie d'un message. N'oubliez pas de faire de même au niveau des Topics. À la fois, pour l'action Create et pour l'action Updtae. En plus du Hint, nous pouvons rajouter, ici, F.error notification pour afficher un message d'erreur si les validations échouent. Et voilà. Les validations fonctionnent. Nous retrouvons bien, ici, le petit message pour dire que le titre peut faire entre 5 et 150 caractères, et nous retrouvons des messages d'erreur nous disant que le titre et le contenu ne peuvent être vide. Cette vidéo vous a présentés les validations en Ruby on Rails. Comprenez que les validations sont très importantes pour votre application Et vous permettront de valider que les informations que vous obtenez avant de les enregistrer en base de données, sont bien celles que vous escomptez.

L'essentiel de Ruby on Rails

Concevez des applications web évolutives et intemporelles avec Ruby on Rails. Installez l’environnement, réalisez un projet de stack overflow, enrichissez-le, etc.

6h08 (85 vidéos)
Aucun commentaire n´est disponible actuellement

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !