Help us understand the problem. What is going on with this article?

Railsチュートリアルでログアウトするときのuser.rbとsession_helperとsession_controllerの役割と何を書くべきか

More than 1 year has passed since last update.

モデル、コントローラー、コントローラのヘルパーがそれぞれ何をしたいのか混乱したのでまとめ

やりたいこと

ログアウトした時にcookieの情報を削除するが、
その際のそれぞれのファイルの役割についてまとめ。
(Ruby on Railsチュートリアル 9.1.3 ユーザーを忘れる)

それぞれに何を書くべきか

user.rb(モデル)
DB更新系

session_helper
コントローラーに書くとゴチャゴチャするメソッドをまとめる。

session_controller
このルーティングで何をしたいのかを明確、簡潔に書く。
中身はヘルパーへgo

※間違っている可能性大なので、
ご指摘ある方是非コメントでお願い致します。

それぞれの中身

user.rbの役割

DB上のユーザの持つセッション情報をnilに更新する。

user.rb
# ユーザーのログイン情報を破棄する
  def forget
    update_attribute(:remember_digest, nil)
  end

session_helperの役割

Session_helperは
以下の2つで、session_controllerがdestroyした時にメソッドをまとめて呼べるように準備する

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

  def log_out
    forget(current_user)
    session.delete(:user_id)
    @current_user = nil
  end

session_controllerの役割

このルーティングにより何をしているのかを明確に示す。
ログアウトしてルートへ飛ぶということのみを記載し、他のゴチャゴチャはhelperに任せる。

session_controller.rb
  def destroy
    log_out
    redirect_to root_url
  end
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away