紙一重の積み重ねスマートフォン用の表示で見る紙一重の積み重ねアラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。7.4ユーザ登録の演習まとめ&解答例です。個人の解答例なので、誤りがあればご指摘ください。本章での学び現状では正しい値を入力しても、登録できない。原因は、UsersController#createに対するテンプレートが存在しないため。16.7ms)ユーザー登録に成功した場合はページを描画せずに、ユーザーのプロフィールページにリダイレクトさせる。@userと同じ意味になる。user_urlは、routes.rbに、以下を記載すると自動的に生成される模様。:users正しく登録が完了すると、以下のURLに遷移するようになる。(この場合はユーザIDが2のユーザ)https://XXXXXX/users/2つまり、user_urlは、ユーザ登録が完了したユーザの、ユーザ情報ページに遷移している。(名前付きルートuser_path(user)にGETでアクセスしたときと同じ画面に遷移している)演習1有効な情報を送信し、ユーザーが実際に作成されたことを、Railsコンソールを使って確認してみましょう。正しい情報が登録されていることを確認。@userが同じ結果になることを確認してみましょう。@userjiroユーザを登録。flash本章での学びflash変数ユーザ登録処理が成功した際に、画面にユーザ登録完了のメッセージを表示するために、flash変数を使用する。App!"全画面に適用するために、applicationのひな型であるhtml.erbにメッセージを組み込んでいる。%>の部分では、flash変数とcssを組み合わせることで、メッセージのレベルごとに適用するBootStrapのCSSを変えている。シンボルを呼び出してみましょう。確認してみてください。7.30のflashはどのような結果になるか考えてみてください。ハッシュのキーであるシンボル:successと、:dangerを使ってアクセスする。db:migrate:resetで、データベースの内容をリセットできる。================確かにユーザ数が0になっていることを確認。Tutorialユーザで登録すると、緑色でメッセージが表示されることを確認。画面のHTMLソースを確認すると、alert-successクラスが表示されている。App!</div>演習1Railsコンソールを使って、新しいユーザーが本当に作成されたのかもう一度チェックしてみましょう。7.32のようになるはずです。find_byメソッドを使ってメールアドレスで検索する。"$2a$10$qH4zt2NtBpRAAP3JUiqha.uMvZOAN5oZYv5TNn04V/1...">演習2自分のメールアドレスでユーザー登録を試してみましょう。Gravatarに登録している場合、適切な画像が表示されているか確認してみてください。自分のメールアドレスで登録。Gravatarで登録したユーザ画像が表示されることを確認。成功時のテスト本章での学びassert_differenceアサーションRailsテスティングガイドによると、yieldされたブロックで評価された結果である式の戻り値における数値の違いをテストする。doとすることで、assert_differenceの処理前後で、User.count(第一引数)の値が、1(第二引数の値)異なっているかをテストすることができる。単一のリダイレクトレスポンスに従う。チュートリアル内にも以下のように説明されている。@user(ユーザ登録完了後のユーザ画面)へ移動している。/users/ユーザID)が表示されることを期待して、users/showテンプレートのテストを行っている。endUserのルーティング、Userのshowアクション、show.html.erbビューがそれぞれ正常に動いているかをテストすることができる。skips演習17.4.2で実装したflashに対するテストを書いてみてください。どのくらい細かくテストするかはお任せします。(FILL_INの部分を適切なコードに置き換えると完成します)。ちなみに、テキストに対するテストは壊れやすいです。文量の少ないflashのキーであっても、それは同じです。筆者の場合、flashが空でないかをテストするだけの場合が多いです。assert_notアサーションRailsテスティングガイドによると、testはfalseであると主張する。問題文にあるように、flashの中身が空ではないことを主張できれば良い。end実行結果がgreenになることを確認。7.35のコードに変更してみましょう。変更が終わったらテストスイートを実行し、正常に動作することを確認してください。このコードでは、Railsのcontent_tagというヘルパーを使っています。HTMLとERBが混ざってしまう場合などに使用するとすっきり表現できるとのこと。%></div>こう変える。%>テストがgreenになることを確認。リファクタリングってこうしてやっていくんだなあ。7.28のリダイレクトの行をコメントアウトすると、テストが失敗することを確認してみましょう。対象箇所をコメントアウトする。@userテストがredになることを確認。skips動作確認後はコメントアウトを戻す。(バグを埋め込んでしまったと仮定してください)。テストコードを追って考えてみてください。endテストがredになることを確認。skipsコンソールのエラーから読み取れる原因は、2点。データベースへの保存処理がないため、エラーのクラスが表示できていないためUser.countが1増えていないためあと、今回のテストのエラーログには出ていないが、以下もあると思う。WEBアプリケーションっぽくなってきました。何の処理が動くのかを考えながら作っていきます。いやー、Rails楽しいなあ。はてなブログProSIerで働く36歳のエンジニアです。自社WEBサービスの開発・AWSのインフラ構築を行っています。なれる最高のフルスタックエンジニアを目指して、RailsやAWSをこつこつ学習中。本を10冊出すことが夢です。PL/SQL」(シーアンドアール研究所)の著者。#振り返りスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。