Rails : ajouter une erreur de validation

In: Rails

2 nov 2008

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

3 Responses to Rails : ajouter une erreur de validation

Avatar

Pada

novembre 12th, 2008 at 13:49

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 ?

Ads

Avatar

Pada

novembre 12th, 2008 at 13:50

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

Avatar

Damien

novembre 12th, 2008 at 13:51

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

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

Comment Form

Photostream

    FlorentPhilou vs 5DMadagascarHélèneLucienPhilou vs langueMug DesignRails TeaPHP vs. Django
  • thoas: Pour avoir pratiqué un peu des deux (mercurial et git), je les trouve très similaire dans leur app [...]
  • Damien: Non, je n'ai jamais testé et encore moins pratiqué mercurial. Je suis plus proche de la communautà [...]
  • Florent V.: Pour l’instant je n’ai utilisé git que pour récupérer les sources de deux ou trois projets, d [...]
  • Sebastian: In your Auth Class is a Bug: return parent::__construct($file, $realm, @$_SERVER['PHP_AUTH_USER'] [...]
  • Damien: Si je suis méchant on me le reproche et pareil quand j'essaye de remonter les notes. On peut pas p [...]

Rss Feeds

En Français :


In English :