0
votes

Comment puis-je stocker une chaîne d'expression de regex dans une méthode d'assistance à utiliser pour valider plusieurs champs différents?

J'ai plusieurs champs différents qui stockent différents numéros de téléphone dans mon application Rails en tant que chaîne. Je peux utiliser le validateur au format Rails intégré avec une expression de regex. Existe-t-il un moyen de placer cette expression dans une méthode d'assistance pour toutes mes validations de numéro de téléphone au lieu d'avoir à ouvrir chaque fichier de modèle et coller la chaîne d'expression.


0 commentaires

4 Réponses :


1
votes

Un moyen de faire cela consiste à créer une préoccupation qui sera incluse dans chaque modèle disposant d'un numéro de téléphone. Dans modèles / préoccupations code>, créez un nouveau fichier appelé quelque chose comme phonable.rb code>.

# models/my_model.rb

class MyModel < ApplicationRecord
  include Phonable

  validates :phone, format: {with: VALID_PHONE_REGEX}
  ...

end


0 commentaires

1
votes

Vous pouvez avoir besoin de n'importe quel fichier de application.rb: xxx

alors vous utilisez simplement la constante partout où vous pouvez également utiliser

Vous pouvez également utiliser la fonctionnalité intégrée de l'autoload des rails, par exemple avec l'approche de préoccupation, l'autre commentateur a été défini - le fichier de préoccupation est automatiquement porté par défaut, de même que les modèles, les contrôleurs, etc

Chargement de fichiers personnalisés au lieu d'utiliser les défauts des défauts des rails. idiomatique ou la "voie des rails". Cependant, je pense qu'il est important de comprendre que vous pouvez charger tous les fichiers que vous souhaitez. Certaines personnes ont automatiquement chargé l'ensemble du dossier lib / et sous-dossiers (voir Chargement automatique des fichiers libra dans les rails 4 )

Une autre alternative consiste à placer votre code quelque part dans le dossier config / initialiseurs , ces fichiers sont automatiquement chargés au démarrage et vous pouvez définir des classes / modules / constantes partagées là-bas


1 commentaires

Bien qu'il y ait plusieurs bonnes solutions ici, j'ai utilisé celui-ci parce que j'utilise cette même chaîne de regex pour reformater mes numéros de téléphone à l'aide de la méthode de capture avant l'enregistrement de l'enregistrement. Cette solution me permet d'utiliser la même constante dans la validation de format et la fonction de reformaté. Si vous utilisez une chaîne de réégionner juste pour valider le format, je vous recommanderais le validateur personnalisé de INGINEERSMNKYKY.



0
votes

Vous pouvez le mettre dans ApplicationRecord (Application_Record.rb)

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true

  VALID_PHONE_NUMBER_REGEX = /\d{10}/ # your regex here
end


0 commentaires

2
votes

Ajouter une application de validateur personnalisée / validateurs / téléphone_validator.rb xxx

puis dans vos modèles xxx


3 commentaires

C'est aussi une bonne réponse, mais la réponse que j'ai marquée ajusté mon cas d'utilisation un peu mieux. Voir le commentaire sur Réponse pour plus d'informations. J'ai également suscité cette réponse.


@Brianttatum Rien ne vous interdit d'utiliser les deux options Vous pouvez simplement utiliser votre constante dans le PhoneValidator . À mon avis TÉLÉPHONE: TRUE TYPINATION DES BEATS Format: {avec: Téléphone_number_regex} Plusieurs fois


Très bon point, cela nettoierait beaucoup de choses et soyez moins à taper.