[RUBY] [rails] concevoir les valeurs par défaut

À propos de l'introduction et du défaut de devise

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>

c5f52229a3b1938b4297854ebbd2d440.png

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

a23f24d4b5f8cf20bd382f240b123723.png

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.

Recommended Posts