第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