0
2

More than 1 year has passed since last update.

ゲストログイン機能

Posted at

1.はじめに

ポートフォリオとしてアプリをみていただく際に新規登録を行っていただくのは手間になると考えゲストログイン機能を実装しました。

2.実装

1.ゲストログイン用のルーティングを追加

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

2.コントローラーの編集

sessions_controller.rbがない場合は、以下コマンドで作成してください。

rails g devise:controllers users
controllers/users/sessions_controller.rb
  def guest_sign_in
    user = User.guest
    sign_in user
    redirect_to posts_path
    flash[:notice] = "ゲストユーザとしてログインしました。"
  end

3.モデルの編集

app/models/user.rb
  def self.guest
    find_or_create_by!(email: 'guest@example.com') do |user|
      user.password = SecureRandom.urlsafe_base64
      user.password_confirmation = user.password
      user.name = "ゲストユーザー"
    end
  end

4.ゲストログインボタンの追加

ボタンを配置したい箇所に以下記述

      <%= link_to users_guest_sign_in_path, method: :post do %>
        <h2 class="btn btn-success ml-2">ゲストログイン</h2>
      <% end %>  

5.ユーザー情報を編集できないようにする

編集画面に転移した際に、ユーザー詳細画面にリダイレクトするように修正

app/controllers/users_controller.rb
before_action :check_guest, only: :edit

  def check_guest
    @user = User.find(params[:id])
    if @user.email == 'guest@example.com'
      redirect_to user_path(@user.id)
      flash[:notice] = "ゲストユーザーは編集できません。"
    end
  end
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2