Validation rails requise pour la numéricité même si la présence n'est pas réglée à vrai

Créé le 13 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - ruby-on-railsruby

La validation Rails requiert une numéricité même si la présence n'est pas réglée à vrai. Cela signifie que lorsque vous configurez votre modèle, vous devez spécifier explicitement si vous souhaitez que les données soient validées par leur présence ou leur numéricité. La validation de la présence vérifie que le champ contient une valeur, tandis que la numéricité vérifie que la valeur est un type numérique. Par exemple, si vous avez un modèle qui contient un champ qui doit être soit un entier, soit un nombre à virgule flottante, la validation de la numéricité s'assurera que l'utilisateur n'entre pas une chaîne de caractères ou une autre valeur non numérique.

Pour configurer le modèle, vous pouvez ajouter les validations nécessaires dans le fichier `model.rb` en utilisant `validates_numericality_of`. Vous pouvez également spécifier si la présence est requise ou non en utilisant `validates_presence_of`. Si vous souhaitez que le champ ne soit pas requis, vous devez spécifier à la fois la validation de la présence et la validation de la numéricité. Si vous ne spécifiez que la validation de la numéricité, il sera considéré comme erroné si aucune valeur n'est entrée.


Quelle est la différence entre la validation de la présence et la numéricité ?

La validation de la présence vérifie que le champ contient une valeur, tandis que la numéricité vérifie que la valeur est un type numérique. Par exemple, si vous avez un modèle qui contient un champ qui doit être soit un entier, soit un nombre à virgule flottante, la validation de la numéricité s'assurera que l'utilisateur n'entre pas une chaîne de caractères ou une autre valeur non numérique.


Comment configurer le modèle ?

Pour configurer le modèle, vous pouvez ajouter les validations nécessaires dans le fichier `model.rb` en utilisant `validates_numericality_of`. Vous pouvez également spécifier si la présence est requise ou non en utilisant `validates_presence_of`. Si vous souhaitez que le champ ne soit pas requis, vous devez spécifier à la fois la validation de la présence et la validation de la numéricité.

class Model < ActiveRecord::Base
  validates_presence_of :field
  validates_numericality_of :field, allow_nil: true
end

Que se passe-t-il si je n'indique que la validation de la numéricité ?

Si vous ne spécifiez que la validation de la numéricité, il sera considéré comme erroné si aucune valeur n'est entrée. Dans ce cas, l'utilisateur ne sera pas capable de soumettre le formulaire sans entrer une valeur valide dans le champ.

class Model < ActiveRecord::Base
  validates_numericality_of :field
end

Est-il possible de configurer la validation de numéricité pour spécifier un type de données ?

Oui, il est possible de configurer la validation de numéricité pour spécifier un type de données en utilisant l'option `only_integer` pour spécifier qu'uniquement des entiers doivent être acceptés, ou `greater_than` pour spécifier une valeur minimum. Il est également possible d'utiliser l'option `less_than` pour spécifier une valeur maximale.

class Model < ActiveRecord::Base
  validates_numericality_of :field, only_integer: true, greater_than: 0, less_than: 10
end