Quelle est la différence entre “valider” et “valide”?
J'ai ajouté une validation pour un objets à l'aide de:
validate :field, presence: true
J'ai découvert qu'ils ne donnent pas de messages d'erreur. J'ai changé à validates
et a obtenu les messages d'erreur. Ce billet est pertinent.
J'ai essayé d'ajouter une validation personnalisée avec validates
et ai une erreur:
You need to supply at least one validation
Je l'ai changé pour validate
, et tout s'est passé comme prévu.
Ma compréhension est d'utiliser validates
avec la normale de validation, et validate
avec des personnalisés. Est ce que le droit? Existe-il d'autres pièces que je devrais connaître? Est-il possible d'avoir le premier problème de l'échec bruyamment et pas seulement de valider tout?
- peut-être l'un est de coutume de validation de la syntaxe
validate
et d'autres est le générique de validationvalidates
syntaxe - Je me demande juste si j'ai oublié quelque chose d'autre. Je n'ai pas pu trouver une explication claire de la les deux et j'espère DONC peut fournir. Je suis d'accord, c'est la seule différence que j'ai trouvé jusqu'à présent.
- J'ai répondu qu'il en gardant l'esprit la question de phare 🙂
Vous devez vous connecter pour publier un commentaire.
valide Cette méthode est un raccourci par défaut tous les validateurs et tout validateur personnalisé classes se terminent par ‘Validator’. Notez que les Rails par défaut validateurs peut être substituée à l'intérieur des classes spécifiques en créant validateur personnalisé classes à leur place comme PresenceValidator.
valider, Ajoute une méthode de validation ou de bloquer à la classe. Ceci est utile lors de la substitution de la validation de la méthode d'instance devient trop lourd et vous êtes à la recherche pour plus descriptive de la déclaration de vos validations.
curiosity
qui doc peut vous joindre le lien et aussi avez-vous testé autant que je sache, il ne fonctionne pasvalidates :title, :presence => true
) simplement utiliser les Validateurs personnalisés fournis avec Rails. Voir: github.com/rails/rails/blob/master/activemodel/lib/active_model/.... Vous pouvez voir comment cela fonctionne dans le code source de lavalidates
méthode: github.com/rails/rails/blob/master/activemodel/lib/active_model/...Je crois que le
:validate
déclaration est utilisée pour personnalisé de validation où, comme:validates
est utilisé pour générique de validation commepresence, uniqueness etc
sur un champLa
validate
méthode de recherche d'une méthode avec le nom du paramètre, c'est à diresi vous ne
validate :field
, il va chercher lessur votre
object
. Depuis Rails définit unattr_accessor
pour chaque base de donnéesfield
lavalidate :field
pourrait appeler lafield
's lecteur de méthode.Si la validation de la fonction renvoie
true
ou si il y a unerror
objet, c'est à direobject.errors
n'est pas vide, alors l'objet est considérévalid?
D'où la raison en
ligthouse
problème, ils se plaignent quevalidate
silently bypasses
la validation 🙂Espère que ce sens
:validate
échec "fort", car il est parfaitement raisonnable (on pourrait même dire "valide"...) appellent à faire. Je n'avais pas pensé à ça.