【#100DaysOfCode】Day27「Railsチュートリアル」8章,9章
7章と8章の違い
- 7章
- ユーザー登録フォーム
- form_forヘルパーを使い、ユーザーのインスタンス変数@userを引数にとる
<%= form_for(@user) do |f| %> . . . <% end %>
セッションフォームとユーザー登録フォームの最大の違いは、セッションにはSessionモデルというものがなく、
そのため@userのようなインスタンス変数に相当するものもない点です。
したがって、新しいセッションフォームを作成するときには、form_forヘルパーに追加の情報を独自に渡さなければなりません。
form_for(@user)
Railsでは上のように書くだけで、「フォームのactionは/usersというURLへのPOSTである」と自動的に判定しますが、セッションの場合はリソースの名前とそれに対応するURLを具体的に指定する必要があります2。
form_for(:session, url: login_path)
テストはいつ行うのか
統合テストの原則:
統合テストの原則:
- 動作の仕様がまだ固まりきっていない場合、アプリケーションのコードを先に書き、期待する動作を「後で」書く
1. ログイン用のパスを開く
2. 新しいセッションのフォームが正しく表示されたことを確認する
3. わざと無効なparamsハッシュを使ってセッション用パスにPOSTする
4. 新しいセッションのフォームが再度表示され、フラッシュメッセージが追加されることを確認する
5. 別のページ (Homeページなど) にいったん移動する
6. 移動先のページでフラッシュメッセージが表示されていないことを確認する
「Railsチュートリアル」 9章 ログイン情報の記憶
remember 機構(チェックボックスのやつ)を使って、ログイン情報を記憶する
ログイン情報の記憶