🐥

Rails ゲストログイン機能

2023/06/07に公開

はじめに

ポートフォリオ作成中のプログラミング初学者です!
今日はポートフォリオに必須のゲストログイン機能を実装しました。

実装

ゲストログイン機能の設定

  • SessionsControllerに新しいアクションguest_sign_inを準備します。
config/routes.rb
  devise_scope :end_user do
    post 'end_users/guest_sign_in', to: 'public/sessions#guest_sign_in'
  end
  • アクションguest_sign_inを設定
app/controllers/public/sessions_controller.rb
class Public::SessionsController < Devise::SessionsController
  def guest_sign_in
    end_user = EndUser.guest
    sign_in end_user
    redirect_to root_path, notice: 'ゲストユーザーとしてログインしました。'
  end
end
  • 以下を追加
  • email: 'guest@example.com'に一致するレコードをデータベースから探し、見つからなかった場合に新しいレコードを作成。
  • SecureRandom.urlsafe_base64は、RubyのSecureRandomモジュールの一部で、ランダムなURLで安全に使用できるパスワードを生成します。
app/models/end_user.rb
def self.guest
    find_or_create_by!(email: 'guest@example.com') do |end_user|
      end_user.password = SecureRandom.urlsafe_base64
      # user.confirmed_at = Time.now  # Confirmable を使用している場合は必要
      # 例えば name を入力必須としているならば, user.name = "ゲスト" なども必要
    end
  end
  • ヘッターにリンクを追加しました!
app/views/layouts/_header.html.erb
<%= link_to 'ゲストログイン', end_users_guest_sign_in_path, class: "nav-link", method: :post  do %>

さいごに

下記の記事で、グストユーザーを削除できないようにする方法&メールアドレス・パスワードを変更できないようにする方法まで詳しく書いてあるので、実装する場合はそちらをご覧ください!

参考にさせていただいた記事🌱

https://qiita.com/take18k_tech/items/35f9b5883f5be4c6e104

Discussion