Ich war süchtig nach einem unerwarteten Fehler bei der Entwicklung, der von der Benutzerverwaltung behoben wird, und habe viel Zeit geschmolzen, sodass ich ihn als Memorandum belassen werde.
** Seien Sie vorsichtig, wenn Sie Ihr Benutzermodell selbst validieren. ** **.
Ich werde einige vorläufige Untersuchungen durchführen und diese in Zukunft umsetzen. ..
Nach der Bundle-Installation habe ich das Benutzermodell wie folgt validiert: Ich wollte das Passwort auf maximal 7 Zeichen beschränken.
Sie haben erfolgreich einen neuen Benutzer registriert.
(models/user.rb)
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :stylists
has_many :shops, through: :stylists
(Kürzung)
validates :password, presence: true, length: { minimum: 7 }, format: { with: /(?=.*\d+.*)(?=.*[a-zA-Z]+.*)./ }
end
Ein Fehler tritt auf, wenn versucht wird, eine Zwischentabelle (Stylist-Modell) gleichzeitig mit dem Erstellen eines neuen Shops (Shop-Modell) nach der Registrierung eines Benutzers (Benutzermodell) zu erstellen.
Die Parameter haben korrekte Werte und ich konnte nicht herausfinden, was ** "illegaler Wert" ** war. Auch in der Situation von ** "Ich kann mich nicht registrieren (neu / erstellen), aber bearbeiten (bearbeiten / aktualisieren)" ** vertiefte sich das Rätsel und ich verbrachte viel Zeit. ..
Wird es nicht gelöst, indem der externe Schlüssel auf Null gesetzt wird?
(models/stylist.rb)
class Stylist < ApplicationRecord
#Vor der Korrektur
belongs_to :shop
belongs_to :user
#Überarbeitet
belongs_to :shop, optional: true
belongs_to :user, optional: true
end
···ich hab es nicht ausgearbeitet.
Es besteht kein Zweifel, dass die Ursache die Validierung ist. Wenn Sie also das Verhalten überprüfen, während Sie die im Benutzermodell beschriebenen Validierungen nacheinander abbrechen,
(models/user.rb)
class User < ApplicationRecord
(Kürzung)
validates :password, presence: true, length: { minimum: 7 }, format: { with: /(?=.*\d+.*)(?=.*[a-zA-Z]+.*)./ }
end
↑ validiert: Alles wurde gelöst, als ich das Passwort gelöscht habe! !!
Und ich habe den Anpassungsinhalt an den folgenden Stellen neu geschrieben.
(config/initializers/devise.rb)
class User < ApplicationRecord
(Kürzung)
#Vor der Korrektur
config.password_length = 6..128
#Überarbeitet
config.password_length = 7..128
Warum werfen Sie beim Speichern einer Zwischentabelle überhaupt einen Fehler? Es ist immer noch ein Rätsel, aber das Gerät hat eine Standardvalidierung, und ich denke, es hat schlecht auf die Validierung reagiert, die ich vorgenommen habe. .. (Wird studieren)
Außerdem habe ich auf den folgenden Artikel verwiesen und ihn angepasst, und er funktioniert einwandfrei!
https://qiita.com/hirokihello/items/862284c60429be5e01cd https://github.com/heartcombo/devise/wiki/Customize-minimum-password-length
Recommended Posts