##環境
Rails 6.1.3
MySQL
##ゲストログイン機能の設定
routes.rb
get '/guest_session' => 'guest_sessions#new_guest'
guests_essions_controller.rb
class GuestSessionsController < ApplicationController
def new_guest
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[:notice] = 'ゲストユーザーとしてログインしました'
redirect_to('/posts/index')
end
end
##解説
####・find_or_create_byでゲストユーザーをあらかじめ作成する手間を省きます。またメールアドレスを'guest@exapmle.com'で固定します。
####・ user.password = SecureRandom.urlsafe_base64はuserのパスワードをA-Z, a-z, 0-9, “-” and “_” **の中からランダムで作成します。ランダムで生成するのはパスワードを特定されると,ユーザー編集ページからメールアドレス・パスワードを変更される可能性があるためです。
####・nameを'ゲストユーザー'で固定します。
##参考記事
[Ruby 2.x] SecureRandom を利用した乱数の生成方法
ゲストログイン機能の追加
簡単ログイン・ゲストログイン機能の実装方法(ポートフォリオ用)