[RUBY] [rails] concevoir les valeurs par défaut
À propos de l'introduction et du défaut de devise
- Introduction de la devise
- concevoir par défaut
Why
Quand j'ai regardé l'article sur le dispositif, il n'y avait qu'un article pour faire un contrôleur de dispositif, et je voulais le compléter avec seulement application.controller </ font>. De plus, à ce moment-là, je ne connaissais pas la plage par défaut de l'appareil et il a fallu du temps pour résoudre l'erreur car j'ai écrit des colonnes et une validation supplémentaires, veuillez donc vous y référer.
Présentation de la devise
Gemfile(Dernière ligne)
gem 'devise'
Terminal
#Le répertoire actuel est~/projects/Confirmez que c'est pictweet
% pwd
#Installer Gem
% bundle install
Terminal
#Démarrez le serveur
% rails s
Terminal
#Créer un fichier de configuration de périphérique
% rails g devise:install
Terminal
#Créer un modèle utilisateur avec la commande devise
% rails g devise user
Si devise_for: users </ font> est inclus comme indiqué ci-dessous, c'est OK!
routes.rb
Rails.application.routes.draw do
devise_for :users
root to: 'tweets#index'
resources :tweets
end
Vient ensuite la création de la table
Terminal
#Effectuer la migration
% rails db:migrate
OK si la table est créée dans la base de données!
Enfin, n'oubliez pas ce qui suit!
Terminal
# 「ctrl +Quittez le serveur local avec "C"
#Redémarrez le serveur local
% rails s
Maintenant que ce dispositif a été introduit, il ne vous reste plus qu'à l'implémenter comme vous le souhaitez.
Cette fois à propos de la valeur par défaut !!! </ font>
Ce n'est pas si pertinent, mais seuls le nom, l'e-mail et le mot de passe sont appliqués dans les validations, et lorsque je vérifie la base de données, la partie mot de passe est enregistrée en tant que colonne avec encrypted_password </ font>. Je voudrais me précipiter dans "valide n'a pas de mot de passe encrypted?", Mais encrypted_password est crypter le mot de passe et l'enregistrer dans la table </ font>, donc valide est ok simplement en appliquant le mot de passe. Au fait, password_confirmation </ font> est ok sans appliquer les validations.
L'histoire a déraillé, mais ici
Faites attention à la 13e ligne.
En installant devise, vous pouvez utiliser la méthode devise_parameter_sanitizer </ font>. Il peut être utilisé lors de l'enregistrement en tant qu'utilisateur avec devise, et c'est une méthode qui "autorise une colonne spécifique". Définissez une méthode devise_parameter_sanitizer </ font> pour cette méthode.
méthode devise_parameter_sanitizer
En combinant la méthode permit, vous pouvez spécifier et inclure la colonne nouvellement ajoutée pour le paramètre strong défini dans devise. Donc, s'il s'agit d'une nouvelle fonction d'enregistrement et de connexion normale, elle peut être complétée dans application.contoroller sans avoir à créer un contrôleur de périphérique. (Il est préférable de créer correctement un contrôleur lors de la transition sur plusieurs pages en raison d'un nouvel enregistrement, etc.)
java:application.controller.rb
private
def configure_permitted_parameters #Le nom de la méthode est habituel
#Autoriser les paramètres pour le modèle utilisateur de l'appareil
devise_parameter_sanitizer.permit(:définir le nom du processus, keys: [:Clés à autoriser])
end
Faites attention à la 14ème ligne!
java:application.controller.rb
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
En plus de: name, vous devez mettre : email </ font> ou : password </ font> dans [] les touches suivantes:. ne pas. Cependant, par défaut, le logiciel le gère dans les coulisses, donc juste : name </ font> est ok!
De côté
Comment annuler la validation par défaut
cette
java:application.controller.rb
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
Fais ça!
java:application.controller.rb
devise :database_authenticatable, :registerable,
:recoverable, :rememberable
Résumé
devise est un joyau qui peut être facilement introduit et implémenter facilement de nouvelles fonctions d'enregistrement, de connexion et de déconnexion, mais dans les coulisses, c'est trop pratique car divers paramètres par défaut sont reflétés sans autorisation et des erreurs inutiles sont susceptibles de se produire. À tout le moins, j'ai introduit un simple défaut.