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
ここでのポイントは、以下の通りです。
- newメソッドではpostデータに設定するために@data = Data.newでviewファイルにパラメータを渡します
- postされるとcreateメソッドにデータが来ます。このタイミングでData.create(data_params)が呼ばれます。
- data_paramsでは、createが呼ばれた時点でparamsにデータが入ってきています。そこで@dataのdataにカラム通りのデータが入っているかを、require()、permit()を使ってチェックします。
- その値を使ってsaveで保存。
newで渡したオブジェクトが関連付いて、その後、require()、permit()を使ってチェックしてOKじゃないと
保存できないよ!って仕組みですね。
何か参考になれば幸いです(*^^*)