Boire ou coder ... Pourquoi choisir?
Publié le 01 novembre 2008 23:00

Rails : ajouter une erreur de validation

Vous le savez probablement déjà (sinon, je ne peux que vous conseiller de voir les bases de Ruby on Rails) comment il est facile de valider des données avec notre framework préféré :)

if mesDonnees.save #Les données ont bien été sauvegardées else # Il y a une erreur. mesDonnees.errors la contient il n'y a plus qu'à l'afficher. end

Après, il n'y a plus qu'à ajouter des paramètres de validation des données dans le modèle. Mais maintenant, supposons d'autres cas de validation un peu particuliers, qui ne rentrent pas dans le cas "normal".

Vous n'avez qu'à créer une nouvelle méthode qui valide vos données (l'exemple ci-dessous est totalement bidon) :

def validates_roxitude(*attribut) reg = Regexp.new '/^ruby(.*?)rox$/' self.errors.add('rox', 'Hey, Ruby ça rox. Faut le dire !') unless reg.match attribut end

Ici, nous mettons donc une erreur sauf si le champ "monChamp" commence par ruby et se termine par rox.

Il n'y a plus qu'à forcer la validation avec cette méthode et le tour est joué ! class monModel < ActiveRecord::Base validates_roxitude :monChamp end

Commentaires

Pada
Pada dit: 11 novembre 2008 23:00

Ta méthode "validates_roxitude" est ajoutée dans ta classe "monModel", ou ailleurs ?

Personnellement, je fais plutôt un truc de ce genre dans mes modèles, je donne un exemple pour un module de polling :

validate :ensure_blah

def ensure_blah

...

end

Tu penses qu'il y a une pratique meilleure que l'autre ?

Pada
Pada dit: 11 novembre 2008 23:00

(oops, non, cet exemple n'est pas lié au module de polling. Ca m'apprendra à éditer/effacer/modifier trop rapidement)

Damien
Damien dit: 11 novembre 2008 23:00 Site web

mon validates_roxitude va dans le modèle. Donc dans la classe monModel.

Ta méthode est tout aussi valide que la mienne ;)

Postez un commentaire

Markdown activé