はじめに
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 %>