[RUBY] Es war überraschend einfach. So aktualisieren Sie Benutzerinformationen, ohne ein Kennwort einzugeben

Überblick

Wie der Titel schon sagt, lautet dieser Artikel "So aktualisieren Sie Benutzerinformationen, ohne ein Kennwort einzugeben". Beim Erstellen einer Anwendung in Rails habe ich mich gefragt, ob ich meine Benutzerinformationen irgendwie aktualisieren kann, ohne mein Kennwort eingeben zu müssen. Es scheint, dass Sie für die Aktualisierungsmethode das Kennwort eingeben müssen. Wenn Sie darüber nachdenken, können viele WEB-Anwendungen wie SNS- und EC-Sites aktualisiert werden, ohne ein Kennwort für Benutzername und Profil einzugeben. Ich fragte mich, ob es einfacher sein würde als erwartet, ohne die Aktualisierungsmethode zu überschreiben.

Was ich tatsächlich getan habe

Es gab eine Methode namens update_without_password, die diesen anständigen Namen hatte. Damit habe ich es diesmal wie folgt implementiert. Die zu verwendende Methode wird einfach danach sortiert, ob das im Parameter enthaltene Kennwort leer ist.

#Wenn das im Parameter enthaltene Passwort leer ist
if params[:password].blank?
  #Benutzerinformationen ohne Passwort aktualisieren
  @user.update_without_password(user_params)

#Wenn der Parameter ein Passwort enthält
else
  @user.update(user_params)

wichtiger Punkt

Wenn das Modell die folgende Beschreibung hat, tritt bei Verwendung der Methode update_without_password ein Fehler auf. Es ist eine Validierung, die bedeutet, dass Sie ein Passwort eingeben müssen!

app/models/user.rb

validates :password, presence: true

Geben Sie die Aktion zum Anwenden der Validierung mit der Option on an. Wenn Sie Folgendes tun, wird die Validierung nur angewendet, wenn Sie den Benutzer erstellen.

validates :password, presence: true, on: :create

Recommended Posts

Es war überraschend einfach. So aktualisieren Sie Benutzerinformationen, ohne ein Kennwort einzugeben
So aktualisieren Sie Benutzerinformationen ohne Kennwort
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
Wie man Spring Security authentifizierte Benutzerinformationen außer Benutzer-ID und Kennwort gibt und wie man darauf verweist
So erstellen Sie eine Klasse, die Klasseninformationen erbt
Wie man einen Cache erstellt, ohne zu viel nachzudenken
So geben Sie Array-Werte ohne Verwendung einer for-Anweisung aus
So verbinden Sie eine Tabelle ohne DBFlute und SQL
Ein Memo, das unerwartet schwierig war, obwohl es einfach schien, zwischen zwei Entitäten auszutauschen