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






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 ?
(oops, non, cet exemple n’est pas lié au module de polling. Ca m’apprendra à éditer/effacer/modifier trop rapidement)
mon validates_roxitude va dans le modèle. Donc dans la classe monModel.
Ta méthode est tout aussi valide que la mienne