学習日記

Ruby on Rails勉強してます

今日やったこと7

Ruby on Rails チュートリアル(第4版) 第8章 基本的なログイン構造

(8.1 セッション 〜 8章最後まで)

 

セッション

SessionというRailsのメソッドを使って一時セッションを作成する。

UserリソースはバックエンドでUserモデルを介してデータベース上のデータにアクセスするが、Sessionリソースはcookiesを保存場所として使う。

Sessionコントローラを生成。

 

演習8.1.1.2で使ったパイプとgrepコマンド

パイプとは

コマンドとコマンドの間に「|」を使うことで複数のコマンドを組み合わせて使うことができる。

grepコマンド

指定したパターンにマッチする行を表示するコマンド。

 

ログインフォーム

SessionActive Recordオブジェクトではない(Sessionモデルがない)のでユーザー登録フォームでform_forヘルパーを使う場合は引数にインスタンス変数ではなく、リソースの名前とそれに対応するURLを具体的に指定する必要がある。

 

ユーザーの検索と認証

ログインが送信されるたびに、パスワードとメールアドレスの組み合わせが有効かどうかを判断する。

認証にはUser.find_byメソッドとauthenticateメソッドを使う。

 

フラッシュメッセージを表示する

ユーザー登録の場合はActive Recordオブジェクトによってエラーメッセージを表示できたが、セッションではActive Recordのモデルを使っていないので自分でフラッシュメッセージを表示させる。

flashを使うとrenderメソッドでレンダリングしてもメッセージが残ったままになってしまうため、flash.nowを使う。

flash.nowのメッセージはその後リクエストが発生した時に消滅する。

 

ログイン

session[:user_id]を使ってユーザーIDを代入する。

sessionメソッドで作成された一時cookiesは、ブラウザを閉じた瞬間に有効期限が終了する。

ユーザーIDを一時セッションに保存できたら、そのユーザーIDを別のページで取り出すためにcurrent_userメソッドを定義する。

レイアウトリンクを修正・テストする。

ユーザー登録と同時にログインできるように修正。

 

ログアウト

ログアウトの処理ではセッションからユーザーIDを削除するためにdeleteメソッドを使う。