J'ai un rails de modèle qui a 7 attributs numériques rempli par l'utilisateur via un formulaire.
J'ai besoin de valider la présence de chacun de ces attributs qui n'est évidemment facile à l'aide d'
validates :attribute1, :presence => true
validates :attribute2, :presence => true
# and so on through the attributes
Cependant j'ai aussi besoin d'exécuter un validateur personnalisé qui prend un certain nombre d'attributs et fait quelques calculs avec eux. Si le résultat de ces calculs n'est pas à l'intérieur d'une certaine fourchette, puis le modèle devrait être déclaré invalide.
Sur c'est propre, c'est trop facile
validate :calculations_ok?
def calculations_ok?
errors[:base] << "Not within required range" unless within_required_range?
end
def within_required_range?
# check the calculations and return true or false here
end
Toutefois, le problème est que la méthode "valider" toujours est exécuté avant que la méthode "valide". Cela signifie que si l'utilisateur quitte l'un des champs obligatoires vides, des rails déclenche une erreur lorsqu'il tente de faire un calcul avec un vide d'attribut.
Alors, comment puis-je vérifier la présence de tous les attributs requis en premier?