Ich versuche zwei Dinge zu tun:
1) Ändern Sie das Standard "Benutzerformular bearbeiten" - mit dem Gerät zur Verfügung gestellt - um "Passwort" zu entfernen und die anderen Felder zu aktualisieren, ohne ein Passwort eingeben zu müssen, dh entfernen Sie die Standard-Validierung für das Passwort.
2) Erstellen Sie ein separates Formular zum Ändern des Passworts
Ich habe alles zum arbeiten, es gibt nur ein Problem, in der separaten Form zum Aktualisieren des Passwortes habe ich ein Feld für das aktuelle Passwort eingefügt. Bei Verwendung des Formulars wird das aktuelle Passwort nicht überprüft, daher habe ich
geändert %Vor%bis
%Vor%Das hat funktioniert, aber es hat ein anderes Problem aufgeworfen. Zurück im Hauptformular mit allen anderen Details außer Passwort fragt das Formular jetzt nach einem "aktuellen Passwort". Wie kann ich dies ohne eine Validierung für das aktuelle Passwort erreichen, das auf dem Hauptformular aufgerufen wird?
Hier ist mein Registrations Controller:
%Vor%Danke!
Ich habe eine Lösung für das Problem gefunden (wenn auch eine sehr unordentliche):
%Vor%Können Sie eine bessere Lösung vorschlagen?
Die angenommene Antwort geht die Frage nicht vollständig an. Welches, glaube ich, ein getrenntes Formular für Benutzerprofilattribute (wie E-Mail, Vorname, usw.) vs. das Passwort hat. Hier ist, was Sie dafür tun müssen:
Nutzen Sie zuerst den Devise :: RegistrationsController für Ihre Profilaktualisierungen.
password
und password_confirmation
. Devise ignoriert diese, wenn sie nicht im Put enthalten sind. Zweitens, erstellen Sie Ihren eigenen Controller, um die Passwortaktualisierungen zu verwalten, und Ihren eigenen Helfer, um current_password
, password
und password_confirmation
beim Update zu verlangen.
Hier ist der Helfer, update_password_with_password
, der die neuen Passwortfelder benötigt.
Tags und Links ruby-on-rails forms devise change-password