fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rails - データ作成時と更新時に、フォームからのリクエストでPOSTとPATCHをどうやって使い分けているのか?

Railsでフォームを記述すると、

  • データの新規作成時には、POST
  • データの更新時には、PATCH

とHTTPメソッドを使い分けていますが、これはどう判断しているのか?

結論

<%= form_for(@user) do |f| %>

上記のように渡されたインスタンス(例では@user)がデータベースに存在するか?を
フォーム作成時にActive Recordnew_record?メソッドで判定している。

@user.new_record?

上記が

  • trueを返した場合は、データが存在するのでPATCH
  • falseを返した場合は、データが存在しないのでPOST

参考

tutorialの第10章のはじめの部分で記述あり
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-edit_form