Contrôle de valeur
1. Le modèle
Jusqu’ici, nous avons passé sous silence la question de la validité des données produites par notre interface (format de l’e-mail…). Nous n’avons pas non plus fait de contrôle sur la présence de valeur en autorisant à chaque fois des valeurs vides.
Une validation peut être faite en surchargeant les méthodes de notre modèle :
-
validate : cette méthode est invoquée pour toute création ou mise à jour de l’objet. La fonction errors devra être utilisée pour stocker les messages d’erreur.
-
validate_on_create : cette méthode est invoquée à la première création de l’objet.
-
validate_on_update : cette méthode est invoquée pour chaque mise à jour de l’objet.
Dans l’exemple ci-dessous, nous modifions notre modèle Personne pour interdire la sauvegarde d’un objet personne sans nom et sans prénom :
class Personne < ActiveRecord::Base
set_table_name 'personnes'
has_many :emails
protected
def validate
if nom == ""
errors.add( "nom", "Le nom ne peut pas etre vide" )
end
if prenom == ""
errors.add( "prenom", "Le prénom ne peut pas être vide" )
end
end
end
Nous testons la valeur des attributs nom et prenom, en cas de valeur vide, nous ajoutons grâce à la fonction errors, l’erreur en mentionnant...