ゲストログイン機能の追加


はじめに

オリジナルアプリを作成するにあたって、中身を見てもらいやすくするためにボタン一つでログインできるようにゲストログイン機能を追加した時の備忘録です。
新規登録やログイン機能はdeviseを使用しています。

guest user 実装

models/users.rb
  def self.guest
    find_or_create_by!(username: 'ゲスト', email: '[email protected]') do |user|
      user.password = SecureRandom.urlsafe_base64
    end
  end

まずはルーティングの設定を行います。

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

new_guest,アクションをusers/sessions_controller.rbに追加します。usersディレクトリはcontrollersに追加。

users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
  def new_guest
    user = User.guest
    sign_in user
    redirect_to root_path, notice: 'ゲストユーザーとしてログインしました。'
  end
end

最後にボタンなどviewを追加すれば、実装完了。

application.html.erm
<p class="control">
  <%= link_to 'ゲストログイン', users_guest_sign_in_path, class: "button is-warning is-fullwidth", method: :post %>
</p>

最後に

ポートフォリオ(オリジナルアプリ)を見てもらうためにはとても重要な機能の追加。比較的簡単に実装が出来ました。
最後まで読んでいただきありがとうございます