LoginSignup
7
11

More than 3 years have passed since last update.

Railsアプリ ゲストログイン機能を実装(devise不使用)

Posted at

はじめに

Webアプリのポートフォリオを作成する際、ゲストログイン機能はほぼ必須の機能かと思います。

ゲストログイン機能の記事はいくつかQiitaに挙がっていますが、現在(2020年12月)ほとんどdeviseを使ったものしかありません。
僕はdeviseを用いずにログイン機能を実装していたため、少し手こずりました。
僕のようにdeviseを用いずにポートフォリオを作っている方は参考にしてみてください!

注意
この記事では、ログイン機能の実装方法までは詳細に書きません。
deviseを使わないログイン機能のことを知りたい方は以下の記事を参考にしてみてください。

環境

  • Ruby version 2.7.2
  • Rails version 6.0.3.4

ゲストログイン機能実装

※以下sessionsコントローラーにてログイン機能を実装している前提で進みます。

①コントローラー作成

$ rails g controller guest_sessions_controller

②routeを追加
ゲストユーザーは削除しないため、destroyアクションは設けません。

routes.rb
post 'guest_login', to: "guest_sessions#create"

③createアクション作成
パスワードはなんでも良いですが、今回はランダムに設定しました。

guest_sessions_controller.rb
class GuestSessionsController < ApplicationController
  def create
    user = User.find_or_create_by(email: "guest@exapmle.com") do |user|
      user.password = SecureRandom.urlsafe_base64
      user.name = "ゲストユーザー"
    end
      session[:user_id] = user.id
      flash[:success] = "ゲストユーザーとしてログインしました"
      redirect_to root_url
  end
end

④ゲストログインボタンの作成
好きなページにゲストログインボタンを追加しましょう。
見た目は適宜変更してください。

<%= link_to "ゲストログイン", guest_login_path, method: :post %>
7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11