form_forにActiveRecord::Baseのオブジェクトを渡せば、
新規登録の場合はmethod="post"
、編集の場合はmethod="patch"
に自動設定してくれる。
けれども以下のように定義したFormオブジェクトを渡すと、
新規の場合も編集の場合もmethod="post"
になってしまっていた。
user_form.rb
class UserForm
include ActiveModel::Model
end
結論として、persisted?
メソッドを定義していなかったのが原因だった。
form_for
メソッド内で、persisted?
メソッドの結果によって、
method属性を決定している。
DBからデータを読み込んで、Formオブジェクトを生成したときは、
persisted?
メソッドがtrue
になるように実装すれば良い。