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というキーワードを使うと
外部から使われなくなる