Tout d'abord, tout commence par l'installation de ce bijou.
installer le dispositif
% gem'devise'
% bundle install
% rails g devise:install
Ceci termine l'installation de l'appareil.
rails g devise user
Un modèle utilisateur et un fichier de migration sont générés.
De plus, lorsque cette commande est exécutée, le routage de l'appareil est automatiquement défini dans config / routes.rb
.
config/routes.rb
Rails.application.routes.draw do
devise_for :users
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
rails g devise:views
Lorsque vous exécutez cette commande, elle générera automatiquement un fichier de vue de la fonction requise en un clin d'œil.
Cette fois, les informations suivantes seront envoyées à la table sur le nouvel écran d'inscription.
ruby:db/migrate/025412010...
lass DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :last_name, null: false
t.string :first_name, null: false
t.string :kana_last, null: false
t.string :kana_first, null: false
t.date :birthday, null: false
... (réduction)
Maintenant que nous avons décrit les informations que nous avons conçu le tableau à l'avance, nous pouvons migrer et compléter le tableau des utilisateurs.
% rails db:migrate
Le formulaire décrit dans le fichier app / views / devise / registrations / new.html.erb
envoie une requête au serveur et l'enregistre dans le tableau, mais valide et définit les messages d'erreur pour enregistrer correctement les informations. ..
users.rb
users.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates :name, presence: true
validates :email, presence: true
#Variable VALIDE_PASSWORD_Remplacez l'option permettant de confondre 6 caractères alphanumériques demi-largeur ou plus dans REGEX
VALID_PASSWORD_REGEX = /\A(?=.*?[a-z])[a-z\d]{6,}+\z/
validates :password, presence: true, length: { minimum: 6 }, format: { with: VALID_PASSWORD_REGEX}
#Décrivez l'option permettant à l'assistant d'entrer en hiragana, katakana et kanji pleine largeur
validates :last_name, :first_name, presence: true, format: { with: /\A(?:\p{Hiragana}|\p{Katakana}|[---]|[un-龠])+\z/ }
#Décrivez l'option de saisie en katakana pleine largeur
validates :kana_last, :kana_first, presence: true, format: { with: /\A[\p{katakana}---&&[^ -~¡-゜]]+\z/ }
validates :birthday, presence: true
end
Avec cela, les informations personnelles de l'utilisateur peuvent être enregistrées dans le formulaire ci-dessus au moment de la nouvelle inscription.
application.controller.rb
ruby:application.controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configre_permitted_parameters, if: :devise_controller?
def configre_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :last_name, :first_name, :kana_last, :kana_first, :birthday])
end
end
Dans la méthode configure_permitted_parameters, qui ne fonctionne que lors du traitement du contrôleur lié à la devise, clés: Si la valeur après n'est pas saisie, elle peut être traitée de manière à ne pas être enregistrée. ** * Au fait, la devise peut recevoir un email et un mot de passe par défaut! ** **
À ce stade, tout ce que vous avez à faire est d'implémenter la fonction de connexion / déconnexion.
・ Modifier le fichier d'en-tête
devise/shared/header
#user_signed_in?Réglez pour que l'affichage change selon que vous êtes connecté ou non.
<% if user_signed_in? %>
<li><%= link_to "#{current_user.name}", class: "user-nickname" %></li>
<li><%= link_to 'Se déconnecter', destroy_user_session_path , method: :delete, class: "logout"%> </li>
<% else %>
<li><%= link_to 'S'identifier', new_user_session_path, class: "login" %></li>
<li><%= link_to 's'inscrire', new_user_registration_path, class: "sign-up" %></li>
<% end %>
Vous pouvez obtenir le nom de l'utilisateur connecté à partir de la colonne DB avec link_to " # {current_user.name} "
.
Vous pouvez maintenant vous connecter et vous inscrire en vous connectant à localhost: 3000 / users / sign_in
ou users / sign_up
.
Bien sûr, ce sont des modifications de fichiers liées à devie, veuillez donc préparer votre propre contrôleur et voir si vous pouvez utiliser ces fonctions depuis la page d'accueil.
Si vous obtenez une erreur, vous pouvez vous connecter en déconnectant et en reconnectant le serveur, veuillez donc l'essayer.
Ce sera la première sortie publique en tant que débutant, donc si vous avez une mauvaise compréhension ou si vous souhaitez faire plus comme ça, nous vous attendons toujours.
Recommended Posts