Les expressions régulières peuvent être utilisées pour vérifier le format des valeurs d'entrée telles que les numéros de téléphone et les adresses e-mail.
Si une valeur autre que la chaîne de caractères ou la chaîne numérique spécifiée est saisie, elle sera interceptée lors du contrôle de validation.
Cette fois, je souhaite autoriser la validation même si l'élément spécifié est une expression régulière ou est laissé vide.
Cette fois, en utilisant le numéro de téléphone comme exemple, essayez d'abord de valider le numéro de téléphone.
validates :phone_number, format: { with: /\A\d{10,11}\z/ }
Il s'agit d'une expression régulière qui signifie que vous devez entrer un nombre demi-largeur à 10 ou 11 chiffres sans tirets.
Cette fois, je veux entrer le numéro de téléphone de manière arbitraire, donc je n'ai pas écrit présence: vrai, alors j'ai pensé que ce serait bien tel quel ...
La validation avec l'expression régulière spécifiée est intervenue, et lorsque j'ai continué avec le champ de saisie vide, je suis resté bloqué dans la validation!
Apparemment, si la validation est appliquée avec une expression régulière, une entrée autre que l'expression régulière ne sera pas acceptée même si elle est vide (nil).
Demandez au mentor et utilisez une méthode personnalisée
Il a été dit qu'il existe un moyen de créer une méthode personnalisée telle que "un nombre demi-largeur vide ou à 10 ou 11 chiffres", mais quand je regarde la méthode personnalisée, cela semble très ennuyeux et difficile.
↓ Article de référence pour les méthodes personnalisées https://qiita.com/h1kita/items/772b81a1cc066e67930e
Donc, à la suite d'essais et d'erreurs, je me suis demandé s'il y avait moi-même une autre méthode et j'ai trouvé une solution très simple.
Ajoutez simplement allow_blank: true comme indiqué ci-dessous.
validates :phone_number, format: { with: /\A\d{10,11}\z/ }, allow_blank: true
Cela signifie littéralement que vous pouvez le laisser vide.
Vous pouvez désormais valider sans entrer de numéro de téléphone!
Si vous voulez que la valeur d'entrée passe la validation avec une expression régulière ou vide, ajoutez allow_blank: true.
Recommended Posts