Rails Tutorialの勉強記録 Chapter 10

Ruby on Rails Tutorialの勉強記録.Chapter 10.

この章では,ユーザーの情報を更新する実装を行い,更新できるユーザーは自分自身だけにするためのauthrizationの方法を学びました.また同様に削除の実装もしました.

なるほどとお思ったことを列挙します.

HTTPメソッド

RESTの場合,更新には,HTTPメソッドの`patch`,削除には,`delete`を使いますが,Webブラウザはネイティブに実装されていないので,`post`メソッドで代用します.Railsでは,`<form>`タグの内部に`<input>`タグを埋め込み,疑似的に`patch`を送ったかのように見せます.

form_wtihの魔法

Railsの`form_with`メソッドは,modelと紐づけた場合は自動で`patch`を送るべきか,`post`を送るべきか判断して,`<form>`タグを作成してくれます.これはモデルのオブジェクトの`new_record?`メソッドで,既に存在しているかどうかを判定して判断しています.存在しているならば,更新のため`patch`を送るための仕組みを組み込みます.

`target=_blank`の時にtabnabbingを防ぐ

tabnabbingとは,サイトAからサイトBを別のタブで開く際に,サイトBがサイトAのタブを別のサイトに変更して,フィッシングサイトなど悪意のあるサイトに飛ばす方法である.なぜこれができるかというと,`window.open`で元のサイトのタブ(サイトAのタブ)を制御できる.それを防ぐために`rel=noopener`をつけることで,`window.open`がnullになりtabnabbingが防げる.

`allow_nil`

モデルのオブジェクトを更新の時に`nil`を許す属性を指定できる.

この記事が気に入ったらサポートをしてみませんか?