やりたいこと
ポートフォリオ作成中なのですが、ユーザーさんに気軽に使って頂くためゲストログイン機能をつけたい。
ちなみログイン認証はsorceryで行っています。
調査
rails ゲストログイン機能と検索
調査した結果、sorceryのメソッドであるauto_login(user)を使ってゲストログイン機能をつけていきます。
実装
view
<%= link_to t('.guest_login'), 'guest_login', method: :post %>
routes.rb
post 'guest_login', to: 'user_sessions#guest_login'
user_sessions_controller.rb
skip_before_action :require_login, only: %i[guest_login] def guest_login redirect_to root_path, alert: 'すでにログインしています' if current_user # ログインしてる場合はユーザーを作成しない random_value = SecureRandom.hex user = User.create!(name: random_value, email: "test_#{random_value}@example.com", password: "#{random_value}", password_confirmation: "#{random_value}", role: :guest) auto_login(user) redirect_to select_food_combinations_path, notice: 'ゲストとしてログインしました' end
こんな感じで、ゲストログイン時に新たにユーザーを作成するようにする。
ログインするたびに新規ユーザーを作成するので、それぞれのゲストユーザーのデータが競合しない。