[RUBY] [Rails 6.0] Procédure d'implémentation "Easy login" requise pour le portfolio

Aperçu

Lors de la création d'une application avec Rails, je pense que de nombreuses personnes implémentent la fonction de connexion à l'aide de devise. Parmi eux, beaucoup de gens ont entendu dire: "Ajoutons un simple login au portfolio!"

Cependant, d'après mon expérience, j'ai eu beaucoup de mal à l'implémenter ''. La raison est simplement parce que je devais faire quelque chose que je ne savais pas sur le plan ''.

Donc dans cet article,

Tout en organisant cette zone, je voudrais sortir la "Procédure d'implémentation Easy Login".

De plus, cet article est basé sur ce merveilleux article. Il y a aussi une explication détaillée sur YouTube, alors jetez un œil.

Qiita | Comment implémenter la fonction de connexion facile / connexion invité (pour le portefeuille)


environnement


Vérifiez le flux de mise en œuvre

Avant d'entrer dans l'implémentation, contrôlons d'abord le `` flux de connexion facile ''.

Flux de connexion facile


1.Cliquez sur le bouton de connexion facile
2-1.Tout courrier([email protected])N'est pas dans la table des utilisateurs, ajoutez une autre colonne et créez un utilisateur
2-2.Tout courrier([email protected])Obtenez-le s'il est dans la table des utilisateurs
3.Connectez-vous en tant qu'utilisateur créé / acquis
4.Rediriger vers votre page préférée(Principalement la première page)

En d'autres termes, tout ce que vous avez à faire est la prochaine étape.

Processus requis


1.Routage facile Définir le chemin du contrôleur de connexion
2.Créez un contrôleur pour une connexion facile
3.Placer le lien dans la vue

Nous le mettrons en œuvre selon ce processus.


Implémentation: éditez 3 fichiers et vous êtes prêt à partir

Ensuite, nous implémenterons dans l'ordre `` routage → contrôleur → vue ''.


1. Paramètres de routage de connexion faciles

Ajoutez la description suivante au fichier de routage.

routes.rb


devise_scope :user do
  post 'users/guest_sign_in', to: 'users/guest_sessions#new_guest'
end

Cela générera le routage suivant:

Prefix Verb URI Pattern Controller#Action
users_guest_sign_in POST /users/guest_sign_in users/guest_sessions#new_guest

Organisez ce contenu.

Créons donc un contrôleur dans le répertoire spécifié et implémentons une action de connexion simple.


2. Création d'un contrôleur pour une connexion facile

Nous allons implémenter l'action new_guest '' dans app / controllers / users / guest_sessions_controller.rb``.

Veuillez noter les points ci-dessus.

app/controllers/users/guest_sessions_controller.rb


class Users::SessionsController < Devise::SessionsController
  def new_guest
    user = User.find_or_create_by!(email: "[email protected]") do |user|
      #Ajouter les colonnes requises dans le bloc(Ajoutez un surnom pour vous-même)
      user.nickname = "Utilisateur test"
      user.password = SecureRandom.urlsafe_base64
      # user.confirmed_at = Time.now  #Obligatoire si vous utilisez Confirmable
    end
    #S'identifier(méthode de conception)
    sign_in user
    #Rediriger vers la première page
    redirect_to root_path
  end  
end

find_or_create_by! Est une méthode comme celle-ci:

Au fait, cette fois, le but est de montrer le code à implémenter, alors veuillez consulter l'article suivant pour compléter la partie espace de noms et mot de passe (Qiita est un article que j'ai écrit).


3. Placer un lien dans la vue

Placez un lien dans la vue où vous souhaitez implémenter un simple bouton de connexion. Pour mon application, j'ai ajouté le code suivant en haut de la page.

haut de page


<%= link_to 'Connexion invité', users_guest_sign_in_path, method: :post %>

C'est ça! (Le GIF ci-dessous a changé les détails de mon application) Image from Gyazo


4. (Supplément) Partiellement porté sur le modèle utilisateur

C'est le travail du modèle d'interagir avec la base de données pour obtenir et générer des enregistrements. Je pense donc qu'il serait préférable de le séparer comme suit.

app/controllers/users/guest_sessions_controller.rb


class Users::SessionsController < Devise::SessionsController
  def new_guest
    user = User.guest
    #S'identifier(méthode de conception)
    sign_in user
    #Rediriger vers la première page
    redirect_to root_path
  end  
end

app/models/user.rb


class User < ApplicationRecord

#(Omis)

  def self.guest
    find_or_create_by!(email: "[email protected]") do |user|
      user.nickname = "Utilisateur test"
      user.password = SecureRandom.urlsafe_base64
    end
  end
end

Sommaire

Je pense qu'il existe différents articles, mais les bases sont telles que présentées ici, alors veuillez vous y référer!

Recommended Posts

[Rails 6.0] Procédure d'implémentation "Easy login" requise pour le portfolio
[rails] Implémentation de l'écran de connexion dans la devise
[Rails] Commentaire mémo de procédure d'implémentation
[EC2 / Vue / Rails] Procédure de déploiement EC2 pour Vue + Rails
Rails Ajout d'une fonction de connexion facile et facile
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Échafaudage de procédure d'implémentation de fonction CRUD de base
[Rails / appareil] Implémentation de la fonction d'édition des informations de compte / Procédure de changement de destination de la redirection
Paramètres de validation pour la fonction de connexion Ruby on Rails
Utilisez [Rails] pour concevoir la fonction utilisateur invité (pour le portefeuille)
[Rails] Procédure de liaison de bases de données avec Ruby On Rails
[Pour les débutants] Procédure de création d'un contrôleur à l'aide de rails
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~