0
0

More than 3 years have passed since last update.

最低限のゲストログイン機能を作った

Posted at

はじめに

 ポートフォリオの作成にあたり、採用担当者さんに少しでも見ていただけるように、ゲストログイン機能を実装した。

流れ

  1. ルーティング記述
  2. ゲストの情報をモデルに記述
  3. コントローラーにアクションを記述
  4. ビューを記述

流れは機能を実装するときとほぼ同じ。

1. ルーティング記述

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

URIはわかりやすく、正規のユーザーログインと同じような感じで。
アクションは、deviseのコントローラーに記述するので、sessionsコントローラーを指定。

2. ゲストの情報をモデルに記述

user.rb
def self.guest #ゲストユーザー用のアカウント作成
    find_or_create_by!(email: 'guest@example.com',
                       nickname: 'ゲスト',
                       class_room_id: 1,
                       first_name: 'ゲスト',
                       last_name: 'ゲスト',
                       attendance_number: 1) do |user|
      user.password = SecureRandom.urlsafe_base64 #パスワードはランダム生成
    end
  end

find_or_create_by!の引数には、自分の作成したアプリで新規登録をする際に必要な項目分作る。
SecureRandom.urlsafe_base64でランダムに文字列を生成。

3. コントローラーにアクションを記述

sessions_controller.rb
def new_guest #ゲストログイン用アクション
    user = User.guest #ゲストユーザーをモデルから呼び出す
    sign_in user #ゲストユーザーでサインイン
    redirect_to root_path
  end

gestは「2」で作成したゲストアカウントのこと。

4. ビューを記述

<%= link_to 'ゲストログイン', users_guest_sign_in_path %>

参考記事

簡単ログイン・ゲストログイン機能の実装方法(ポートフォリオ用)

最後に

 ユーザー登録前に、2つの情報を登録して、その情報にユーザーを紐づけているのだが、どうすれば、ゲストログインで事前の2つの情報を自動で作成できるのだろうか?必須項目にしない以外の方法を考えたいのだが…

0
0
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
0