2010-12-07 19 views
0

J'ai une règle de validation personnalisée sur un modèle qui dit que l'utilisateur ne peut pas avoir plus de 3 enregistrements avec un état actif.Validation, rappel

validate: not_over_active_limit,: avant =>: créer

La question se pose quand je dois mettre à jour l'un des 3 dossiers actifs de l'utilisateur. Quand j'appelle record.update! ou record.save !, une erreur de validation indique que je ne peux pas avoir plus de trois enregistrements actifs. Mais je veux seulement que la validation s'exécute sur before_create, pas sur save! ou mise à jour!

Je peux contourner ce problème en appelant save (false), mais je ne veux pas le faire.

Des suggestions pour la manipulation?

Répondre

0

Le code que vous recherchez est

validate :not_over_active_limit, :on => :create 

Non :before mais :on

+0

Cela ne fonctionne pas. Mais cela a fait: valider: not_over_active_limit,: on =>: créer,: if => Proc.new {| r | r.new_record? } – keruilin

+1

C'est intéressant parce que le proc que vous avez spécifié signifie essentiellement que vous voulez valider seulement sur créer. – Chirantan