[RUBY] Wenn Sie Benutzerinformationen mithilfe der Geräteeinstellungen auf dem Bearbeitungsbildschirm ändern, wenn das Kennwort nicht gespeichert ist

Wenn Sie Benutzerregistrierungsinformationen mit devise bearbeiten, kann die Lösung, wenn die Fehlermeldung auf dem Ansichtsbildschirm als Aktuelles Kennwort angezeigt wird, beim Bearbeiten → Aktualisieren nicht leer sein und der Bearbeitungsbildschirm wird nicht gespeichert.

ruby '2.6.5' rails '6.0.0 devise 4.7.2

Wenn Sie ein Konto mit zwei Geräten haben und die Benutzerregistrierungsinformationen bearbeiten und speichern möchten, fassen wir den Einstellungsablauf zusammen.

① Überprüfen Sie die Route / Schienen Überprüfen Sie die Registrierungen / Bearbeitungspfade des Benutzers in Schienenrouten.

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

Ich konnte bestätigen, dass es sich um edit_user_registration_path handelt. Erstellen Sie dazu mit link_to einen Pfad.

(2) Datei Controller / users / registrations_controller.rb.

Setzen Sie before_action und configure_account_update_params. Dieses Mal werde ich meine Kolumne setzen.

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
③ Weiter ist die Ansicht.

Erstellen Sie eine Datei edit.html.erb in Benutzern / Registrierungen. Ich benutze meistens eine Kopie von new.html.erb, aber es gibt einige zusätzliche Hinweise. Ich verwende zwei Geräte, damit die Verzeichnisse unterschiedlich sind, aber mit einem Gerät erstellt die Ansicht edit.html.erb in devise / registrations.

Ändern Sie auch den Pfad von form_with. Referenzseite hier Nach dem Fazit ist dies die Standardeinstellung von devise, aber beim Aktualisieren des Kennworts wird das aktuelle Kennwort authentifiziert und aktualisiert.

<%= 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>

Füge das hinzu. Bei der Bearbeitung ist ein Element erforderlich, um das vorhandene Kennwort einzugeben.

Durch Hinzufügen wurden die geänderten Elemente erfolgreich gespeichert. Es ist jedoch wichtig, auch wenn Sie das Passwort nicht ändern. Was ist das? Es ist wie es ist. Ich werde weiter forschen und lernen.

Recommended Posts

Wenn Sie Benutzerinformationen mithilfe der Geräteeinstellungen auf dem Bearbeitungsbildschirm ändern, wenn das Kennwort nicht gespeichert ist
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise
[Schienen] Wenn die Layoutänderung des Geräts nicht berücksichtigt wird
6 Punkte zu bezweifeln, wenn eine Benutzerregistrierung mit devise nicht möglich ist
Wie die Website auf dem Bildschirm angezeigt wird
[Twitter API] Gegenmaßnahmen, wenn auf der https-Website "Es ist nicht sicher" angezeigt wird
Die Gerätefehlermeldung wird nicht richtig angezeigt.
Wenn das Projekt nicht in Eclipse angezeigt wird
[Android Studio] Über die Tatsache, dass die Entwurfsansicht bei Verwendung von TextClock nicht angezeigt wird