J'étais accro à une erreur inattendue avec le dispositif, qui est pris en charge par la gestion des utilisateurs, et fondu une quantité considérable de temps, donc je vais le laisser comme un mémorandum.
** Soyez prudent lorsque vous validez vous-même votre modèle utilisateur. ** **
Je vais faire des recherches préliminaires et les mettre en œuvre à l'avenir. ..
Après l'installation du bundle, j'ai validé le modèle utilisateur comme suit: Je voulais mettre une limite de 7 caractères ou plus sur le mot de passe.
Vous avez enregistré avec succès un nouvel utilisateur.
(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
(réduction)
validates :password, presence: true, length: { minimum: 7 }, format: { with: /(?=.*\d+.*)(?=.*[a-zA-Z]+.*)./ }
end
Une erreur se produit lors de la tentative de création d'une table intermédiaire (modèle Stylist) en même temps que la création d'une nouvelle boutique (modèle Boutique) après l'enregistrement d'un utilisateur (modèle utilisateur).
Les paramètres ont des valeurs correctement, et je n'ai pas pu trouver ce qui était ** "valeur illégale" **. Aussi, dans la situation de ** "Je ne peux pas m'inscrire (nouveau / créer) mais je peux éditer (modifier / mettre à jour)" **, le mystère s'est approfondi et j'ai passé beaucoup de temps. ..
N'est-il pas résolu en autorisant zéro de la clé externe?
(models/stylist.rb)
class Stylist < ApplicationRecord
#Avant correction
belongs_to :shop
belongs_to :user
#modifié
belongs_to :shop, optional: true
belongs_to :user, optional: true
end
···C'était mauvais.
Il ne fait aucun doute que la cause est la validation, donc si vous vérifiez le comportement en annulant les validations décrites dans le modèle utilisateur une par une,
(models/user.rb)
class User < ApplicationRecord
(réduction)
validates :password, presence: true, length: { minimum: 7 }, format: { with: /(?=.*\d+.*)(?=.*[a-zA-Z]+.*)./ }
end
↑ valide: tout a été résolu lorsque j'ai supprimé le mot de passe! !!
Et j'ai réécrit le contenu de la personnalisation aux endroits suivants.
(config/initializers/devise.rb)
class User < ApplicationRecord
(réduction)
#Avant correction
config.password_length = 6..128
#modifié
config.password_length = 7..128
Pourquoi lancez-vous une erreur lors de l'enregistrement d'une table intermédiaire en premier lieu? C'est toujours un mystère, mais la conception a une validation par défaut, et je pense que cela a fait une mauvaise réaction avec la validation que j'ai faite. .. (Étudiera)
De plus, j'ai fait référence à l'article suivant et l'ai personnalisé, et cela fonctionne très bien!
https://qiita.com/hirokihello/items/862284c60429be5e01cd https://github.com/heartcombo/devise/wiki/Customize-minimum-password-length
Recommended Posts