0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsチュートリアルメモ - 第8章

Last updated at Posted at 2020-02-26

メモの目次記事はこちら

Railsチュートリアル8章へのリンク

第7章からだいぶ日にちが空いてしまった。。。
気を取り直して最後まで完走していく

サマリ

  • パスワード認証機能の追加
  • cookieを利用したセッション管理

ポイント

  • flash変数の設定後の画面表示をrenderにするとflashメッセージが消えずに残り続けてしまうが、flash.nowにすると次のリクエストでメッセージが消える
  • Railsで事前定義済みのsessionメソッドが利用できる
    • session[:user_id] = user.id
  • User.find(session[:user_id])を使うと、userが存在しないときに例外が発生するので、User.find_by(id: session[:user_id])を使用する
  • app/helpers/配下に追加したヘルパーモジュールは全てのコントローラーで使用できる。今回はsession_helper.rbを追加して、ログイン・ログアウト用の処理を全てのコントローラーから利用できるようにする。
  • 余計なDBアクセスを避けるため、||=を使用して、非ログインのときのみDBアクセスが発生するようにする
  • test/fixtures/の中のymlに定義することで、都度DBに登録しなくても、DB登録ユーザーのようにユーザー情報のテストを行うことができる
  • ヘルパーメソッドはテストから呼び出せない
  • ログアウトでやることは①sessionから:user_idを消す②@current_userインスタンス変数を消す(nilで上書く)の2つ
  def log_out
    session.delete(:user_id)
    @current_user = nil
  end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?