[Ruby on Rails] Implémentation de la validation qui ne fonctionne que lorsque les conditions sont remplies

Dans Ruby on Rails, il existe une scène dans laquelle vous souhaitez écrire une validation qui ne fonctionne que lorsqu'une certaine condition est remplie, et il a fallu du temps pour la résoudre, donc ce qui suit montre comment écrire une validation qui ne fonctionne que lorsqu'une certaine condition est remplie.

Aperçu

Description de la validation qui n'est valide que lorsque la valeur de la colonne X de l'enregistrement que vous souhaitez enregistrer est un

Exemple concret

Dans l'exemple ci-dessous, lorsque la valeur de la colonne public_flag (type: integer) de la table products est 1, Il s'agit d'un exemple d'imposition d'une restriction selon laquelle la colonne nom du produit (nom), la description du produit (description) et le prix du produit (prix) de la table des produits ne peuvent pas être enregistrés s'ils sont vides.

Dans les cas suivants, si la valeur de public_flag est 0, il est possible de s'enregistrer dans la table products même si le nom du produit (nom), la description du produit (description) et le prix du produit (prix) sont vides.

model(product.rb)

 with_options presence:true, if: :isProductPublicable?  do |v|
   v.validates :name
   v.validates :description
   v.validates :price
 end

 #public_vrai quand l'indicateur est 1
 def isProductPublicable?
  public_flag == 1
 end

with_options est une option qui vous permet d'appliquer plusieurs validations à la fois. isProductPublicable? Renvoie true si la valeur de la colonne public_flag est 1.

Recommended Posts

[Ruby on Rails] Implémentation de la validation qui ne fonctionne que lorsque les conditions sont remplies
(Ruby on Rails6) Affichage de la base de données qui a obtenu l'identifiant de la base de données
[Ruby on rails] Implémentation d'une fonction similaire
[Rails] Mise en œuvre de la validation qui maintient l'unicité
Ruby on Rails Lorsque vous ne connaissez pas la cause de la restauration lors de l'enregistrement.
Implémentation de la fonction de connexion Ruby on Rails (Session)
[Ruby on Rails] Jusqu'à l'introduction de RSpec
Quand le terminal Ruby on Rails revient en arrière
[Ruby on Rails] Implémentez un graphique circulaire qui spécifie le pourcentage de couleurs
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
Explication de Ruby sur rails pour les débutants ⑥ ~ Création de validation ~
Essayez d'utiliser l'attribut de requête Ruby on Rails
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
Résumé de la validation Ruby on Rails
[Ruby on Rails] Seul l'utilisateur qui a publié peut modifier
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Une note sur la fonction de départ de Ruby on Rails
[Note] À propos du problème Fizz_Buzz (Fonctionnement de Ruby on Rails)
Connaissance de base de Ruby on Rails
[Ruby on Rails] Changez la destination de sauvegarde du recueil de gemmes * Remarque
[Ruby on Rails] Fonction de publication que seuls les utilisateurs connectés peuvent publier
[Ruby on Rails] Implémentation de la fonction de commentaire
Cas où les utilisateurs sont déconnectés lors de la modification d'une application (rails)
Le problème que le contenu des paramètres est complètement affiché dans la vue [Rails]
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
[Ruby on Rails] Introduction des données initiales
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
[Ruby on Rails] Notation japonaise de l'erreur
Explication de Ruby sur rails pour les débutants ①
[Ruby on Rails] Comment faire de la destination du lien une partie de l'ID spécifié
Comment résoudre les erreurs qui se produisent lors du test d'intégration "Ruby on Rails"
[Java] Où est la classe d'implémentation de l'annotation qui existe dans BeanValidation?
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
[Rails] Procédure de mise en œuvre lorsque des fonctions publiques / privées sont ajoutées à la fonction de publication
Paramètres de validation pour la fonction de connexion Ruby on Rails
Recommandation de classe de service dans Ruby on Rails
Publiez l'application avec ruby on rails
Ruby on Rails ~ Principes de base de MVC et du routeur ~
[Ruby on Rails] Un mémorandum de modèles de mise en page
Ruby on Rails Implémentation de la fonction d'envoi automatique de courrier
Déterminez la page actuelle avec Ruby on Rails
Ruby on Rails Comment implémenter la saisie d'adresse automatique
[Ruby on Rails] Affichage individuel des messages d'erreur
[Ruby on Rails] S'il y a des enregistrements en double lors de l'enregistrement des données, ne vous enregistrez pas
[Ruby on rails] Lors de l'exécution de la commande heroku, bash: heroku: command not found s'affiche. [Tutoriel Rails]
Bibliothèque non chargée lors de la tentative de mise à niveau de la version ruby et des rails s