【90日目】【1日20分のRailsチュートリアル】【第8章】“Remember me”チェックボックスを追加する
今日は「8.4.5 “Remember me” チェックボックス」から。
8.4.5 “Remember me” チェックボックス
今回の実装は、リスト8.2のログインフォームにチェックボックスを追加するところから始めます。
ログインフォームのビューにチェックボックスを追加。
app/views/sessions/new.html.erb
<%= f.label :remember_me, class: "checkbox inline" do %> <%= f.check_box :remember_me %> <span>Remember me on this computer</span> <% end %>
見た目を整えるためにCSS追加。
app/assets/stylesheets/custom.css.scss
.checkbox { margin-top: -10px; margin-bottom: 10px; span { margin-left: 20px; font-weight: normal; } } #session_remember_me { width: auto; margin-left: 0; }
サーバーを起動して
$ rails server -b $IP -p $PORT
チェックボックスが追加されていることを確認。
ログインフォームの編集が終わったので、チェックボックスがオンのときにユーザーを記憶し、オフのときには記憶しないようにします。
params[:session][:remember_me]
でチェックボックスの状態を取得できるそう。
セッションのcreateアクションにてチェックボックスの状態によってユーザーを覚えておくか忘れるか処理を分ける。
app/controllers/sessions_controller.rb
: if user && user.authenticate(params[:session][:password]) log_in user params[:session][:remember_me] == '1' ? remember(user) : forget(user) redirect_to user :
チェックボックスがオフのときはforget
じゃなくて何もしなくてもいいんじゃないの…?
と思ったけど、前回のログイン時にチェックボックスをオンにしてたら永続的セッションに残ったままになるからわざわざ削除してるんだろうな。
なるほど。
今日の作業時間は【20分】。
次は「8.4.6 Rememberのテスト」から。