2016-09-24 5 views
0

Ich verwende einen Benutzer-Scope-Controller, der von Devise generiert wurde, um zusätzliche Attribute zu übergeben.Devise Issue - Benutzern erlauben, ohne Passwort zu bearbeiten

class Users::RegistrationsController < Devise::RegistrationsController 
before_action :sign_up_params, only: [:create] 
before_action :account_update_params, only: [:update 

protected 

    def sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :cpf]) 
    end 

    def account_update_params 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :cpf, :birth_date, :phone, :gender]) 
    end 

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

end 

Die Routen

devise_for :users, controllers: {registrations: 'users/registrations} 

Alles bis arbeitete umfassen die update_resource (resource, params) Verfahren zum Controller und entfernen Sie die current_password Feld auf die Ansicht, vorgeschlagen als https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

Nach dieser Änderung kann ich alle zusätzlichen Felder (first_name, last_name ... etc) außer dem Passwort bearbeiten. Die Passwortänderung bleibt nicht bestehen. Irgendeine Idee?

Rails-Version: 5.0.0.1 Devise Version: 4.2.0

Antwort

0

Im account_update_params Methode, die Sie benötigen, um Ihre password und password_confirmation hinzuzufügen.

def account_update_params 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :cpf, :birth_date, :phone, :gender, :password, :password_confirmation]) 
end 
+0

Ich versuchte, dass Charn und nicht funktioniert. =/ – user1301037

+0

Alle Fehler in Ihrem Entwicklungsprotokoll während der Aktualisierung Passwort –

+0

Nein, nachdem ich die Felder password und password_confirmation in der Bearbeitungsansicht bearbeitet habe, werde ich mit der Erfolgsmeldung zum Stamm weitergeleitet, aber das neue Passwort wird nicht übergeben. Das Protokoll zeigt nur - Erledigt 401 Nicht autorisiert in 259ms (ActiveRecord: 1.1ms) – user1301037

Verwandte Themen