Überspringen Sie die Validierung für einige Mitglieder im Entwickeln-Modell beim Passwort-reset
Mein Benutzer (Ausarbeitung) - Modell hat auch name, city, nation, Telefon Mitglieder.
In der Seite "Registrierung erstellen" - ich validates_presence_of city, nation, phone, name, email, :on => :create
Bearbeiten In der Registrierung Seite - ich validates_presence_of city, nation, phone, name, :on => :update
Wenn ich jetzt ein neues Passwort setzen auf forgot_password_page, es fragt nach der Präsenz von Stadt, nation, Telefon, name innen Devise::PasswordsController#update
Wie kann ich damit umgehen selektive Validierungen?
Ich vermute, es sollte so etwas wie,
validates_presence_of city, nation, phone, name, :on => :update, :if => :not_recovering_password
def not_recovering_password
# what goes here
end
- Sie könnten auf der Suche nach diesem - blog.devinterface.com/2011/05/two-step-signup-with-devise
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem, denn wenn mein Benutzer erstellt wird nicht alle seine Felder sind erforderlich. Die anderen Felder' Anwesenheit wird überprüft
on: :update
mit einer Validierung.Also so habe ich es gelöst:
Die Methode
encrypted_password_changed?
ist in der Entwickeln Erstattungsfähig.encrypted_password_changed?
halten?unless: :encrypted_password_changed?
Stieß ich auf diese Frage sucht eine Antwort auf eine ähnliche Frage, die hoffentlich jemand findet das nützlich. In meinem Fall wurde ich den Umgang mit älteren Daten, die fehlenden Informationen für die Felder, die zuvor nicht erforderlich, aber wurden später erforderlich. Hier ist was ich getan habe, im wesentlichen zu beenden, der obige code:
Grundsätzlich es nutzt die Abwesenheit/Anwesenheit des password_confirmation Feld zu wissen, wenn ein Benutzer versucht, zu ändern, Ihr Kennwort zurückzusetzen. Wenn es nicht gefüllt ist, sind Sie nicht, es zu ändern (und damit führen Sie Ihre Validierungen). Wenn es gefüllt ist, dann werden Sie ändern/zurücksetzen, und, damit, Sie überspringen möchten Ihre Validierungen.
if: "password_confirmation.nil?"
In das Gerät-Modell können Sie überschreiben
reset_password!
und verwenden Sie Ihre eigene Validierungen. Zum Beispiel:Bekam eine Antwort von José - https://github.com/plataformatec/devise/issues/1623