[Rails] devise を利用 ゲストユーザー機能( ポートフォリオ 用)


初めに

ポートフォリオ用のWebサイトには必須と言われるゲストユーザーログイン機能。
deviseを使用したゲストログイン機能について紹介します。

前提として

deviseの導入が完了している事
以下が参考記事となります。
https://qiita.com/ShinyaKato/items/a098a741a142616a753e

ゲストログイン機能の実施

config.routes.rb
# 以下を追加
 devise_for :users, :controllers => {
    registrations: 'users/registrations',
    sessions: 'users/sessions'   
  } 

devise_scope :user do
    post 'users/guest_sign_in', to: 'users/sessions#new_guest'
  end
app.controllers.users.sessions.controller.rb

#以下を追加
 def new_guest
    user = User.find(1)
    user.update(email: '[email protected]',name: 'ゲストユーザー') do |user|
      user.password = SecureRandom.urlsafe_base64
    end
    sign_in user
    redirect_to root_path
  end
app.views.tweets.index.html.haml
#以下を追加
.guest
  = link_to  users_guest_sign_in_path, method: :post, class:"guest__btn" do
    ゲスト

ポイント

・deviseのsign_inメソッドを用います。

・find_byを用いる事でゲストユーザーをあらかじめ作成する手間を省けます。

・パスワードをSecureRandom.urlsafe_base64を使用する事でパスワードをランダムに作成します。これによってGitHubにソースコードをあげる場合等にパスワードの漏洩を防ぐ事ができます。

補足

私が紹介した内容はあくまでゲストユーザーを登録する方法になります。
仮にアカウント削除機能やパスワードの変更を防ぎたいのであれば別途今まで紹介した内容にプラスで設定が必要です。