[RUBY] [Rails] Eine Geschichte, die weiterhin fälschlicherweise den Grund überprüfte, warum die Aktualisierungsaktion nicht bestanden wurde (Aktualisierung)

1. Was ich machen wollte

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.

2. Ausführungsumgebung

Ruby 2.6.5 Rails 6.0.3

3. Vorbereitungen als Voraussetzung

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.

スクリーンショット 2020-09-02 12.00.22.png

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?

4. Fazit

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.

5. Fehler im Schlamm

スクリーンショット 2020-09-02 14.49.05.png

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

[Rails] Eine Geschichte, die weiterhin fälschlicherweise den Grund überprüfte, warum die Aktualisierungsaktion nicht bestanden wurde (Aktualisierung)
Die Geschichte der Einführung von Gradle als Nachrüstung eines bestehenden Systems, das keine Pakete verwaltet
Die Geschichte, dass das erzwungene Update nicht implementiert werden konnte
Die Geschichte, die zur Lösung des Fehlers führte, weil postgres nicht mit Docker-Compose begann
Die Geschichte, dass die DB-Verbindung und andere Zeitüberschreitungen nicht gemäß dem festgelegten Wert abgelaufen sind
[Gradle] Die Geschichte, dass die Klassendatei nicht in der JAR-Datei vorhanden war
Die Geschichte, dass der Erstellungsfehler bei Verwendung von Eclipse 2020 nicht aufgehört hat
Entspricht "Fehler, dass die Basisauthentifizierung nicht bestanden wird" im Testcode "Die Geschichte, die nicht gemacht werden konnte".
So interagieren Sie mit einem Server, der die App nicht zum Absturz bringt
[Rails] So übergeben Sie eine Validierung wie ein Kennwort, wenn Sie eine Aktualisierungsaktion ausführen
Eine Geschichte über das Senden einer Pull-Anfrage an MinGW, um die libgr-Version zu aktualisieren
Nachdem ich das Montyhall-Problem mit Ruby überprüft hatte, war es eine Geschichte, die ich gut verstehen konnte und die ich nicht gut verstand
Eine Geschichte, dass eine Person, die ein solides iOS gemacht hat, möglicherweise von der Implementierung von Listener abhängig ist, wenn sie zu Android wechselt