ポートフォリオを作成するにあたってお試しで使いやすくするために、ゲストログイン機能を作成しました。
参考記事:簡単ログイン・ゲストログイン機能の実装方法(ポートフォリオ用)
(1)ルーティングに記述。
devise_scope :user do
post 'users/guest_sign_in', to: 'users/sessions#guest_sign_in'
end
(2)「guest_sign_in」アクションを設定するため、「session_controller.rb」を作成し記述。
sign_in user でユーザーとしてログイン。
def guest_sign_in
user = User.guest
sign_in user
redirect_to posts_top_path
end
(3)ゲストユーザーを作成するメソッドをUser.rbに記述。
- 「find_or_create_by」はデータを自動検索し、条件に該当したデータがあればデータの値を返し、存在しなければ新規作成するRailsのメソッド。
- 今回はパスワードを6文字以上~12文字以内で作成するように制限をかけているので「SecureRandom.urlsafe_base64」にてランダムな文字列を作成する上で6文字で作成できるように文字数を指定。
def self.guest
find_or_create_by!(email: "guest@example.com")
user.password = SecureRandom.urlsafe_base64(6)
user.name = "ゲスト"
user.account_id = "guest123"
end