Ruby on Railes 第9章

第9章 ユーザーの更新・表示・削除

edit、update、index、destroyアクションを追加

9.1 ユーザーを更新する

ユーザーを編集するためのeditアクションを作成 PATCHリクエストに応答するupdateアクションを作成 ユーザー情報を更新できるのはそのユーザー自身に限られる

updating-usersトピックブランチを作成

9.1.1 編集フォーム

ユーザー編集ページの正しいURLが/users/1/edit ユーザーのidはparams[:id]変数で取り出すことができる ユーザー編集ページに対応するビュー 重複が多い、コードの繰り返しをパーシャルにまとめる

Gravatarへのリンクでtarget="_blank" リンク先を新しいタブ (またはウィンドウ) で開くようになる

https://rails-tutorial-apori.c9users.io/users/2/edit

form_for(@user)のコード 新規ユーザー用のPOSTリクエストとユーザー編集用のPATCHリクエストを区別するのでしょうか。 →Railsは、ユーザーが新規なのか、それともデータベースに存在する既存のユーザーであるかを、 Active Recordのnew_record?論理値メソッドを使用して区別できる form_for(@user)を使用してフォームを構成すると、 @user.new_record?がtrueのときには  POST falseのときには  PATCHを使用

ナビゲーションバーにあるユーザー設定へのリンク edit_user_pathという名前付きルート current_userというヘルパーメソッドを使う

9.1.2 編集の失敗

updateアクションの作成 update_attributes を使って送信されたparamsハッシュに基いてユーザーを更新 無効な情報が送信された場合、 更新の結果としてfalseが返され、elseに分岐して編集ページをレンダリング

update_attributesへの呼び出し Strong Parametersを使用してマスアサインメントの脆弱性を防止 Userモデルのバリデーションとエラーメッセージのパーシャルが既にあるので 、 無効な情報を送信すると役立つエラーメッセージが表示される

9.1.3 編集失敗時のテスト

統合テストを生成 rails generate integration_test users_edit

編集失敗時の簡単なテストを追加