読者です 読者をやめる 読者になる 読者になる

ぞえの技術めも

Ruby on Rails勉強中

【87日目】【1日20分のRailsチュートリアル】【第8章】ログアウトで保持しているユーザー情報を削除する

Ruby on Railsチュートリアル(第3版)

今日は「8.4.3 ユーザーを忘れる」から。

8.4.3 ユーザーを忘れる

ユーザーがログアウトできるようにするために、ユーザーを記憶するためのメソッドと同様の方法で、ユーザーを忘れるためのメソッドを定義します。

どうでもいいところなんだけど「ユーザーを忘れる」ていう表現になんか違和感がある、、、「保持しているユーザー情報を削除する」ってことだよね。
「記憶」トークンだから「忘れる」という表現になるのかな。

Userモデルにremember_digestnilで更新するメソッドを追加。

app/models/user.rb

  # ユーザーログインを破棄する
  def forget
    update_attribute(:remember_digest, nil)
  end

終了するには、forgetヘルパーメソッドを追加してlog_outヘルパーメソッドから呼び出します。

forgetヘルパーメソッドでcookiesの情報を削除する。

app/helpers/sessions_helper.rb

  # 永続的セッションを破棄する
  def forget(user)
    user.forget
    cookies.delete(:user_id)
    cookies.delete(:remember_token)
  end

  # 現在のユーザーがログアウトする
  def log_out
    forget(current_user)
    :

ログアウト処理を実装できたので実動作見てみよう。

サーバーを起動して

$ rails server -b $IP -p $PORT

テストアカウントでログイン。

f:id:kt_zoe:20161209123717p:plain

cookieが保存されていることを確認。

f:id:kt_zoe:20161209123820p:plain

ログアウトするとremember_tokencookieが削除されていることを確認。

f:id:kt_zoe:20161209123905p:plain

ちゃんとログアウトできるようになりました。

今日の作業時間は【19分】

次は「8.4.4 2つの目立たないバグ」から。