Ruby on Rails の new から create の流れ

Ruby on Rails の new から createの流れについて。

コードは以下の感じになると思います。

前提条件

  • DBのテーブル名は、Dataテーブル
  • Dataのカラムは未定(想像にお任せですw)
class RubiesController < ApplicationController
  ...
  def new
    @data = Data.new
  end

  def create
    data = Data.create(data_params)
    if data.save
      redirect_to XXXX_path
    else
      render 'index'
    end
  end

  private
  
  def data_params
    params.require(:data).permit(:XXXX, :XXXX DBの各カラム)
  end
end

ここでのポイントは、以下の通りです。

  1. newメソッドではpostデータに設定するために@data = Data.newでviewファイルにパラメータを渡します
  2. postされるとcreateメソッドにデータが来ます。このタイミングでData.create(data_params)が呼ばれます。
  3. data_paramsでは、createが呼ばれた時点でparamsにデータが入ってきています。そこで@dataのdataにカラム通りのデータが入っているかを、require()、permit()を使ってチェックします。
  4. その値を使ってsaveで保存。

newで渡したオブジェクトが関連付いて、その後、require()、permit()を使ってチェックしてOKじゃないと

保存できないよ!って仕組みですね。

 

何か参考になれば幸いです(*^^*)