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 Réponses à “Rails : ajouter une erreur de validation”

  1. Pada dit :

    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 ?

  2. Pada dit :

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

  3. Damien dit :

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

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

Laisser une réponse

 
Fork me on GitHub