Die Benutzerregistrierungsfunktion (benannter Eigentümer) wurde mit gem devise implementiert. Als ich versuchte, die registrierten Daten ohne Eingabe des Passworts zu bearbeiten, trat ein Fehler auf und ich machte mir Sorgen um die Lösung.
Ruby 2.6.5 Rails 6.0.3
Die folgenden zwei Vorbereitungen waren gemäß den Spezifikationen auf der Entwicklerseite erforderlich. (1) Zulassen von Werten für andere Spalten als die Standardspalte während account_update (Desinfektionsprogramm) (2) Erlaube Updates ohne Passwort.
Offiziell hier oder [hier](https://github.com/heartcombo/devise/wiki/How-To:-Allow-users-to-edit- Sie können dies tun, indem Sie sich den Artikel ansehen (deren Konto ohne Angabe eines Passworts). Wenn Sie Qiita überprüfen, sollte es viele geben.
Obwohl diese vorgenommen wurden, konnte das Update aus irgendeinem Grund, wie unten gezeigt, nicht ordnungsgemäß gespeichert werden, wahrscheinlich aufgrund der Gerätespezifikationen ...? In Qual besorgt sein.
Während der obigen Fehlerüberprüfung war ich wie folgt besorgt.
1.ArgumentError mit 0 ~ angegeben, wird das Argument also nicht an erster Stelle übergeben? (Aber params geht richtig durch ...) 2. Wenn die Fehlermeldung ein Passwort ist, funktioniert das passwortlose Update von devise nicht?
Es war ein Fehler, weil die Passwortüberprüfung nicht funktioniert hat.
owner.rb
class Owner < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true
validates :email, presence: true, uniqueness: true, format: { with: VALID_EMAIL_REGEX}
validates :password, presence: true, confirmation: true, length: { minimum: 7 }
has_many :shops
end
Die Validierung des obigen Modells wurde auch zum Zeitpunkt der Aktualisierung angewendet, sodass es sich um einen Fehler handelte. Wenn Sie sorgfältig darüber nachdenken, wird die für die Validierung festgelegte Fehlermeldung ausgegeben. Es ist also natürlich, nicht wahr?
Damit
owner.rb
class Owner < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true
validates :email, presence: true, uniqueness: true, format: { with: VALID_EMAIL_REGEX}
validates :password, presence: true, confirmation: true, length: { minimum: 7 },on: :create
has_many :shops
end
Es wurde gelöst, indem die Kennwortüberprüfung nur zum Zeitpunkt der Erstellung wie folgt festgelegt wurde.
In Bezug auf die Fehlermeldung zum Zeitpunkt der Bindung.pry zuvor dachte ich, dass das Argument hier nicht gut bestanden wurde, aber dass die Erkennung an erster Stelle falsch war.
Nachdem das Argument in der Aktualisierungsaktion des Controllers ordnungsgemäß übergeben wurde, wird die Aktualisierung auf dem Debug-Bildschirm erneut ausgeführt, nicht wahr? Das Update, das ich auf diesem Bildschirm erwähnt habe, enthält keine Argumente. Daher wird nur die Fehlermeldung angezeigt, dass keine Argumente vorhanden sind.
Es war ein Fehler, den ich gemacht habe, weil ich diesen Fluss nicht richtig verstanden habe ... Reflexion.
Recommended Posts