newアクションでインスタンス化@item=Item.newは必要なの?

ChatGPTさんに聞いてみた。

new アクションでモデルのインスタンスを生成するのは一般的な慣習ですが、厳密には必須ではありません。インスタンスを生成する主な理由は、通常、フォームを表示する際に初期値を持たせることです。この初期値を持つインスタンスがない場合、フォームフィールドに初期値を表示することが難しくなります。

例えば、ブログアプリケーションの記事作成フォームを考えてみましょう。記事のタイトルや本文にデフォルト値を表示するには、new アクションで記事の空のインスタンスを生成し、それをフォームに渡すことが便利です。こうすることで、フォームを表示する際に初期値を設定できます。

def new

  @article = Article.new

end

@article というインスタンス変数に記事の空のインスタンスを格納し、これをフォームのビューに渡します。

ただし、特定のケースでは new アクションでのインスタンス生成を省略することもできます。例えば、ユーザーがフォームを使ってデータを送信する前にデフォルト値が不要な場合や、フォーム内で初期値を固定する必要がない場合です。

インスタンスを生成しない場合、フォームで受け取ったデータを直接処理することもできますが、フォームの表示が少し複雑になる可能性があります。したがって、通常は new アクションでインスタンスを生成してフォームを表示することが良い慣習とされています。

書いたほうがいいらしい