HTTP POST ≒ request.post?
例えば以下のようにlink_toメソッドを呼び出してリンクを作成すると、HTTP的にはPOST扱いとなる。
link_to("削除", {}, :confirm => "削除する?", :delete)
HTTPリクエストは以下のように発行される。
POST / HTTP/1.1 (中略) _method=delete
で、このリクエストをコントローラで判断してみる。
request.post? #=> false request.delete? #=> true
request.post?がfalseになるのはかなり違和感がある。
requestはHTTP Requestを表現するオブジェクトなのだから個人的にはrequest.post?はHTTP POSTだったら常にtrueであるべきとは思うんだけどな。*1
まぁたぶんRESTとかActiveResourceとかに関連してくる話なのだと思う。
DHHがRailsConf2006で語っていた気がするけどまだ詳細は押さえていなかったり。
*1:method.post? method.delete?とかだったらいいんだけど…。