rails-tutorial7章アウトプット

・RESTfulとは
   RESTという設計原則に従うシステムの事を指す形容詞
・RESTの設計原則とは?
   ・HTTPリクエストはそのリクエストで必要な情報をすべて持ち、前のリクエストからの状態が保存される必要がない (ステートレス)     ・個々の情報(リソース)への操作の表現がHTTPメソッドとして統一されている
   ・個々の情報(リソース)がそれぞれ一意なURIで表される
   ・あるリソースから別の情報を参照したいときは、リンクを利用する
ぶっちゃけ書いててなんのこっちゃってなってるので、今は、ブラウザからのリクエストに対して あたかもリソースを直接操作しているかのような動きを実現するアーキテクチャぐらいのイメージを持っておこう...
・Gravatarって?
   ユーザーのメールアドレス情報を簡単なハッシュにみたいなものにして、
その情報を含んだURLをGravatarに渡すと画像とメールアドレスを関連づけて表示してくれるサービス
・form_withメソッドとは?
   引数にモデルオブジェクトをとり、HTMLのform要素を作成するためのメソッド
   フォーム内部のHTMLは、form_withに渡すブロックの中に記述する
   ex)ユーザーモデルのフォームを作成するとき
   <%= form_with model:@user, local: true do |f| %>
<%= f.label :name %> ユーザの名前の入力欄に対応するlabel要素を出力、
                  デフォルトで属性の名前を翻訳情報として扱う
<%= f.text_field :name %>  ユーザーの名前の入力欄を出力



   <% end %>
・ユーザー登録情報を送信したとき
   ユーザー登録フォーム送信時に以下の情報がUsersコントローラーにparamsとして渡される
   "user" => { "name" => "Foo Bar",
"email" => "foo@invalid",
"password" => "[FILTERED]",
"password_confirmation" => "[FILTERED]"
}
   これはユーザー登録のフォームを送信したときに、それぞれ入力した情報を値として、属性をキーとして
   ハッシュにして、そのハッシュが値として、一人のユーザーをキーとしたハッシュの入れ子構造になっている
   ややこしい表現になったのでまとめると
   ユーザー登録フォーム送信時paramsにはハッシュの入れ子構造で入力した値が入る
   ※railsはuserは文字列ではなくシンボルとしてUsersコントローラーに渡している
   よって記述はparams[:user]となる
   しかし、このままだとユーザーが送信したデーターが丸ごとUserのインスタンスに渡されてしまうので
   これから管理者権限を実装するためにadmin属性などを追加した時admin='1'をparams[:user]に
   紛れ込まされたりすると管理者権限を奪われてしまう
・じゃあどうするのか?
   Strong Parametersというテクニックを使おう!!
   これは必須のパラメーターと許可されたパラーメーターを指定するというもの
   例えば:user属性を必須として、名前、メール、パスワード、パスワード確認の属性は認可、それ以外は許可しない場合
   params.require(:user).permit(:name, :email, :password, :password_confirmation)
   となる
   これらのパラメーターの定義はuser_paramsという外部メソッドのなかに記述するのが慣習らしい
   user_paramsメソッドは外部に変な使われ方をされないようにprivateというキーワードを使うと
   外部から使われなくなる