[RUBY] Mettre en œuvre la fonctionnalité de gestion des utilisateurs à l'aide de Devise

Installer Devise

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.

concevoir des fichiers associés

Générer un modèle

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

Générer une vue

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.

Modifier chaque fichier

Fichier de migration

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

Paramètres d'erreur et de validation

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


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.

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! ** **

Implémentation de login / out

À 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

Mettre en œuvre la fonctionnalité de gestion des utilisateurs à l'aide de Devise
Introduire la conception avec Rails pour implémenter la fonctionnalité de gestion des utilisateurs
Implémenter la fonctionnalité de recherche à l'aide de la clause LIKE
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (1)
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (3)
concevoir l'enregistrement des utilisateurs
Mettre en œuvre des fonctions de gestion des utilisateurs dans un format d'assistant
Message flash à l'aide de devise
Mettre en œuvre la page de modification de devise
Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir
[Rails] Implémenter la fonction de recherche d'utilisateurs
Partout dans le monde, les Freeters ont essayé d'utiliser la devise.
Implémenter la fonction de catégorie en utilisant l'ancêtre