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.
ruby 2.7.2 rails 5.2.4.4
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" 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
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.
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