概要
本記事は RUNTEQアドベントカレンダー 2021 の16日目の記事となります!
RUNTEQに入学して約1ヶ月が経った段階で、学習の振り返りとして簡易的なアプリを作りました!
あの頃の夏の思い出を共有して、ノスタルジックな気分になれるアプリです。
(モチーフは、井上陽水の「少年時代」)
今回は、このアプリで実装したゲストログインの方法を紹介します。
作成したアプリを気軽に使ってもらうためにゲストログインを実装しようと考えていらっしゃる方は多いのではないのでしょうか?
是非参考にしてみてください。
前提
- gem 'sorcery' をインストール済み
- ruby 2.6.3
- Rails 5.2.6
ルーティング
# routes.rb
post '/guest_login', to: 'user_sessions#guest_login'
guest_loginというパスを受け取ると、
user_sessionsコントローラーのguest_loginアクションを実行するという処理です。
コントローラー
# user_sessions_controller.rb
def guest_login
@guest_user = User.create(
name: 'ゲスト',
age: '**',
email: SecureRandom.alphanumeric(10) + "@email.com",
password: 'password',
password_confirmation: 'password'
)
auto_login(@guest_user)
redirect_to root_path, success: 'ゲストとしてログインしました'
end
- SecureRandom.alphanumeric(10)では、ランダムな10文字の英数字を生成しています。
- auto_loginはSorceryが与えてくれるメソッドです。
つまり、ここでは、*emailがそれぞれ違うゲストユーザーが生成されることになります。
*この実装には、1つ問題点があると思っています。それは、ランダムに生成された10文字の英数字が被る可能性がごくわずかながらあるということです。ですが、今回はそこまでのことを考えて実装していないので、ご理解いただけると助かります。
ビュー
<%# shared/_header.html.erb %>
<nav>
<ul>
<li><%= link_to 'ゲストログイン', '/guest_login', method: :post %></li>
</ul>
</nav>
まとめ
以上でゲストログインが簡単に実装できるので、誰かのお役に立てれば幸いです。