.valid? et .errors
Rails utilise la méthode .valid? pour savoir si un objet est valide ou pas.
class Person < ActiveRecord::Base validates_presence_of :name end Person.create(:name => "Jean Paul").valid? # => true Person.create(:name => nil).valid? # => false
Ma classe Person nécessiste pour validation la présence du nom. Si ce dernier est vide ou égal à nil, l’objet correspondant est non valide. Bien sûr, cette méthode .valid? n’est pas utilisée par moi-même. C’est Rails qui l’utilise implicitement lorsqu’il essaye d’enregistrer un élément dans la bdd.
Quand ActiveRecord pratique des validations, je peux voir quelles erreurs existent en utlisant la méthode .errors qui renvoie une collection d’erreurs. Si cette collection est vide, alors l’objet est valide et il peut être enregistré dans la bdd.
>> p.errors => #<ActiveRecord::Errors..., @errors={"name"=>["can't be blank"]}>
Aides prédéfinies à la validation (ou helpers)
Rails intègre plusieurs types de validation, variés et faciles à mettre en place, que l’on peut customiser avec des paramètres. Ca ressemble à :
class Person < ActiveRecord::Base validates_presence_of :name end
Je pense que les plus utilisées sont :
validates_presence_of # vérifie la présence d'un objet. Par exemple, je ne veux pas enregistrer d'album dans ma bdd sans le nom de l'artiste. validates_uniqueness_of # vérifie l'unicité d'un objet. Par exemple, je ne veux pas avoir deux fois le même album dans ma discographie. validates_inclusion_of # vérifie que l'objet est compris entre telle et telle valeur (1950 et 2010 pour l'année de l'album par exemple) validates_length_of # véirifie qu'un objet a une taille particulière, par exemple un mot de passe qui doit faire minimum 6 caractères
Valeurs par défaut
Chacun aide prédéfinie (ou helper) à la validation a 2 valeurs par défaut pour 2 de ses options :
- option
: définit le moment où la validation se fait. Par défaut c’est
n:savemais on peut aussi mettre:createou:update - option
:message: c’est le message qui apparaît à l’utilisateur lorsqu’une erreur survient. Chaque helper a son message par défaut. Par exemple, le message par défaut pourvalidates_presence_ofest can’t be empty. Si on veut changer ce message par défaut, il suffit de définir l’option:message => "ne peut être vide bordel!"
Flux RSS