はじめに
ポートフォリオの作成にあたり、採用担当者さんに少しでも見ていただけるように、ゲストログイン機能を実装した。
流れ
- ルーティング記述
- ゲストの情報をモデルに記述
- コントローラーにアクションを記述
- ビューを記述
流れは機能を実装するときとほぼ同じ。
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つの情報を自動で作成できるのだろうか?必須項目にしない以外の方法を考えたいのだが…