[RUBY] [Rails] Comment passer la validation telle que le mot de passe lors de l'exécution d'une action de mise à jour

Lors de la mise en œuvre d'un processus tel que la mise à jour et l'enregistrement des informations de profil d'un utilisateur, je souhaite saisir uniquement les informations que l'utilisateur souhaite modifier et ignorer les autres vérifications de variantes de formulaire (en particulier les mots de passe)! Je pense qu'il y a des scènes comme ça. Cette fois, je vais vous montrer comment faire.

Méthode de mise en œuvre

Utilisez l'option : on '' dans les options de validation. Par exemple, en définissant on :: create '', le contrôle de validation ne peut être effectué que lorsqu'un nouvel enregistrement est créé. Dans mon cas, le contrôle de validation a également été effectué sur les conditions d'utilisation et le contrôle des informations personnelles (colonne acceptée), donc ce contrôle de validation a été activé même pendant l'action de mise à jour, et les informations utilisateur n'ont pas pu être modifiées. J'ai fait. Cela peut être évité en utilisant l'option ``: on '' pour effectuer le contrôle de validation uniquement lorsqu'un nouvel utilisateur est enregistré.

user.rb


validates :password, presence: true, length: { minimum: 6 }, on: :create
validates :accepted, acceptance: { message: 'Vérifiez s'il vous plaît' }, on: :create

Vous pouvez spécifier l'action comme ceci. Vous pouvez également définir un contexte personnalisé avec l'option ``: on ''! Pour plus de détails, voir Cet élément dans le guide des rails.

Vous pouvez également faire de même avec un mot de passe en définissant allow_nil: true. C'est une option qui ne valide pas si la valeur est nulle. e? Si je le spécifie, le mot de passe vide sera-t-il enregistré? ?? Je pense que has_secure_password est utilisé pour vérifier l'existence lorsque l'objet est créé (principalement gem'bcrypt 'est utilisé), donc un mot de passe vide ne sera pas enregistré dans la base de données. Il n'y en a pas. Par conséquent, il est possible d'ignorer la validation uniquement lors de l'exécution de l'action de mise à jour.

Il s'agit d'un développement personnel et l'échelle est encore petite, mais je pensais que des changements de validation occasionnels auraient un impact important sur l'application pour les grands services. .. ** La validation ne doit pas être définie globalement, mais doit être limitée autant que possible pour réduire la plage d'influence **!

Merci d'avoir lu jusqu'au bout!

Je sort ce que j'ai appris tous les jours! Si vous avez des suggestions, je vous serais reconnaissant de bien vouloir commenter.

Recommended Posts

[Rails] Comment passer la validation telle que le mot de passe lors de l'exécution d'une action de mise à jour
[Rails] Comment éviter "Utiliser la syntaxe des fusées de hachage" lors de l'exécution de Rubocop
[Rails 5] Comment afficher l'écran de changement de mot de passe lors de l'utilisation de l'appareil
Comment résoudre les erreurs qui se produisent lors de l'installation de Rails 5.1.3
Comment mettre à jour les modifications utilisateur dans Rails Devise sans entrer de mot de passe
[Rails] Comment écrire lors de la création d'une sous-requête
[Validation] rails Comment spécifier après la date d'aujourd'hui
Comment mettre à jour les informations utilisateur sans mot de passe
Comment écrire des rails
[Ruby / Rails] Que faire lorsque NoMethodError apparaît lors de l'utilisation d'une méthode destructive comme le filtre!
Comment générer automatiquement un diagramme ER lors de la migration avec Rails 6
Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails
Que vérifier lorsque rails db: la migration ne réussit pas
Comment spécifier la base de données lors de la création d'une application avec des rails
Comment utiliser ArgumentMatchers tels que Mockito's any () dans Kotlin
[Rails 5] Comment utiliser gem gon ~ Comment passer des variables de Rails à JS ~
[Rails] Une histoire qui a continué à vérifier incorrectement la raison pour laquelle l'action de mise à jour n'a pas réussi (mise à jour)
[Rails] Comment utiliser enum
Comment lire les itinéraires des rails
Comment utiliser la jonction de rails
Comment mettre à jour avec activerecord-import
Comment terminer le serveur de rails
Comment écrire des graines de Rails
[Rails] Comment désactiver les turbolinks
[Rails] Comment utiliser authenticate_user!
[Rails] Comment mettre en œuvre le scraping
[Rails] Comment faire des graines
Comment écrire le routage Rails
[Rails] Comment installer simple_calendar
[Rails] Comment installer reCAPTCHA
[Rails] Comment utiliser Scope
Comment essayer la fonction de prévisualisation Java (telle que Java 15 Record) avec IntelliJ