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
編集失敗時の簡単なテストを追加