[RUBY] Lors de la modification des informations utilisateur à l'aide des paramètres du périphérique sur l'écran d'édition lorsque le mot de passe n'est pas enregistré

Lors de la modification des informations d'enregistrement de l'utilisateur à l'aide de l'appareil, la solution lorsque le message d'erreur sur l'écran de visualisation est affiché comme Mot de passe actuel ne peut pas être vide lors de la modification → la mise à jour est effectuée et l'écran de modification n'est pas enregistré.

ruby '2.6.5' rails '6.0.0 devise 4.7.2

Si vous avez un compte avec deux devises et que vous souhaitez modifier les informations d'enregistrement de l'utilisateur et les enregistrer, nous résumerons le processus de configuration.

① Vérifiez l'itinéraire / les rails Vérifiez les inscriptions de l'utilisateur / modifiez le chemin dans les itinéraires des rails.

edit_user_registration GET    /users/edit(.:format)                                                          users/registrations#edit

J'ai pu confirmer qu'il s'agissait de edit_user_registration_path. Créez un chemin pour cela avec link_to.

(2) Fichier contrôleurs / utilisateurs / registrations_controller.rb.

Définissez before_action et configure_account_update_params. Cette fois, je vais mettre ma chronique.

before_action :configure_account_update_params, only: [:update]
def configure_account_update_params
    devise_parameter_sanitizer.permit(:account_update,  keys: [:nickname, :email, :password, :gender_id, :birth, :bloodtype_id, :emergencyperson, :emergencycall, :real_name, :real_name_kana, :phone_number])
  end
③ Vient ensuite la vue.

Créez un fichier edit.html.erb dans users / registrations. J'utilise principalement une copie de new.html.erb, mais il y a quelques notes supplémentaires. J'utilise deux dispositifs pour que les répertoires soient différents, mais avec un seul, la vue crée edit.html.erb dans devise / registrations.

Modifiez également le chemin de form_with. Site de référence ici Dès la conclusion, il s'agit du paramètre par défaut de l'appareil, mais lors de la mise à jour du mot de passe, le mot de passe actuel est authentifié et mis à jour.

<%= form_with model: @user, url: user_registration_path, method: :patch, class: 'registration-main', local: true do |f| %>
 <div class="field">
    <%= f.label :current_password %> 
    <%= f.password_field :current_password, autocomplete: "current-password" %>
  </div>

Ajoute ça. Lors de l'édition, il est nécessaire d'avoir un élément pour saisir le mot de passe existant.

En ajoutant cela, les éléments modifiés ont été enregistrés avec succès. Cependant, c'est essentiel même si vous ne changez pas le mot de passe, alors qu'est-ce que c'est? C'est comme ça. Je continuerai à rechercher et à apprendre.

Recommended Posts

Lors de la modification des informations utilisateur à l'aide des paramètres du périphérique sur l'écran d'édition lorsque le mot de passe n'est pas enregistré
[Rails 5] Comment afficher l'écran de changement de mot de passe lors de l'utilisation de l'appareil
[Rails] Lorsque le changement de disposition du dispositif n'est pas reflété
6 points de doute lorsque l'enregistrement de l'utilisateur n'est pas possible avec l'appareil
Comment le site Web s'affiche à l'écran
[API Twitter] Contre-mesures lorsque "Ce n'est pas sûr" apparaît sur le site https
Le message d'erreur du périphérique ne s'affiche pas correctement.
Lorsque le projet n'est pas affiché dans eclipse
[Android Studio] À propos du fait que la vue de conception n'est pas affichée lors de l'utilisation de TextClock