createメソッドItem.create(item_params)は使わないの?

  1. create メソッド:
    • create メソッドは、データベースに新しいレコード(または行)を作成し、それを保存するためのメソッドです。
    • モデルクラス(Active Recordモデルなど)に対して呼び出され、新しいデータベースエントリを作成します。
    • create メソッドは通常、モデルの属性値を引数として受け取り、それをデータベースに保存します。データベースに保存された後、オブジェクトのインスタンスが返されます。
    • 例: User.create(name: 'John', email: 'john@example.com')User モデルに新しいユーザーレコードを作成し、それをデータベースに保存します。

簡潔に言えば、インスタンス化はオブジェクトを生成し、そのオブジェクトの属性を設定するプロセスであり、create メソッドはデータベースに新しいデータを作成し、それを保存するためのメソッドです。通常、オブジェクトを生成してから create メソッドを使用してデータベースに保存します。例えば、RailsのActive Recordモデルでは、モデルの新しいインスタンスを生成し、それをデータベースに保存するために new メソッドと save メソッドを組み合わせて使用します。

if @item.saveで条件分岐して保存されたか見ることが多い。

if @item.saveでデータベースに保存される。

createは保存まで一体して行うので、@item.saveが使えなくなる。

だからこう書いたらいい

  def new
    @item = Item.new
  end

  def create
    @item = Item.new(item_params)
    if @item.save
      redirect_to root_path
    else
      render :new
    end
  end

render :newでフォームの入力画面を再表示してくれる。(つまり保存されるまでそのページにとどまる)

すべてChatGPTさんに聞いた。