[RUBY] [Rails] [Devise] Profil bearbeiten, ohne Passwort einzugeben

Im Standardzustand von Devise müssen Sie das Kennwort, das Bestätigungskennwort und das aktuelle Kennwort eingeben, um das Profil zu bearbeiten.

Da es für den Benutzer sehr mühsam ist, das Kennwort zum Bearbeiten des Profils einzugeben, haben wir es möglich gemacht, die Profilinformationen ohne Eingabe des Kennworts zu bearbeiten.

Ich werde es als Vergessenheit veröffentlichen.

Umgebung

ruby 2.7.2 rails 5.2.4.4

Devise Routing behoben

config/routes.rb


Rails.application.routes.draw do
  devise_for :users, #Fügen Sie der Zeile hier ein Komma hinzu
    controllers: { registrations: 'registrations' } #Zeile hier hinzufügen

Erstellen Sie registrations_controller.rb

Erstellen Sie "registrations_controller.rb" in "app / controller /". Fügen Sie den folgenden Code zu "registrations_controller.rb" hinzu

app/controllers/registrations_controller.rb


class RegistrationsController < Devise::RegistrationsController

  protected

  def update_resource(resource, params)
    resource.update_without_current_password(params)
  end
end

Die Methode update_without_current_password wurde im Benutzermodell implementiert

Fügen Sie den folgenden Code zu app / models / user.rb hinzu

app/models/user.rb


class User < ApplicationRecord

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

# ============hinzufügen====================
  def update_without_current_password(params, *options)
    params.delete(:current_password)

    if params[:password].blank? && params[:password_confirmation].blank?
      params.delete(:password)
      params.delete(:password_confirmation)
    end

    result = update_attributes(params, *options)
    clean_up_passwords
    result
  end
# ====================================

end

Jetzt können Sie Ihre Profilinformationen bearbeiten, ohne Ihr Passwort eingeben zu müssen. Sie können das Passwort auch bearbeiten.

Ändern Sie das Umleitungsziel nach dem Bearbeiten des Profils

Wenn dies die Standardeinstellung von Devise ist, wird nach dem Bearbeiten des Profils ** zur obersten Seite ** gewechselt. Nach dem Bearbeiten des Profils möchte ich zur Profilseite des angemeldeten ** Benutzers ** umleiten, daher habe ich den folgenden Code zu "registrations_controller.rb" hinzugefügt.

app/controllers/registrations_controller.rb


class RegistrationsController < Devise::RegistrationsController

  protected

  def update_resource(resource, params)
    resource.update_without_current_password(params)
  end

# ============hinzufügen====================
  def after_update_path_for(resource)
    user_path(resource)
  end
# ====================================

end

Die Methode "after_update_path_for" ist eine von Devise bereitgestellte Methode. Sie können angeben, zu welchem Pfad nach dem Aktualisieren des Kontos gewechselt werden soll.

das ist alles!


Referenzierte Site https://easyramble.com/user-account-update-without-password-on-devise.html

Recommended Posts

[Rails] [Devise] Profil bearbeiten, ohne Passwort einzugeben
[Schienen] erfinden
[Rails] Einführung in das Gerät
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
[Rails] entwickelt eine Hilfsmethode
So aktualisieren Sie Benutzerinformationen ohne Kennwort
[Rails] Passen Sie die Validierung des Geräts an
Gerät mit Schienen handhaben
[Rails] Standardmäßig festgelegte Kennwortüberprüfung abbrechen / ändern
[Rails] entwickeln eine Einführungsmethode
[Rails] Bearbeiten und Anpassen von Geräteansichten und Controllern
[Schienen] Standardwerte festlegen
Implementieren Sie eine Bearbeitungsseite
[Rails] Einführung in die Grundlagen der Entwicklung
Was ist Rails Gem Devise?
[Rails] Flow bei der Installation von Gem Devise
[Schienen] Spalte zum Entwickeln hinzufügen
[Rails] Fehler während der Installation des Geräts
[Schienen] Änderungen der von devise erstellten Ansichtsseite werden nicht berücksichtigt
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise