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.
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 **!
Je sort ce que j'ai appris tous les jours! Si vous avez des suggestions, je vous serais reconnaissant de bien vouloir commenter.