CRUD機能とは、ほぼ全てのソフトウェアが有する4つの永続的な基本機能の頭文字をそれぞれ並べた用語のことをいう。 その4つの機能とは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)を指す。
今回は、CのCreateについての仕組みを解説する。そのため、主にコントローラのnewアクションとcreateアクションについて解説する。Createは、新規投稿である。つまり、データベースに何も既存のデータが存在しない場合において、新しくデータを作り出す(文字通りCreate)ことを意味する。
1.Createの処理の流れ
新しいデータを入力する処理
↓
入力した新しいデータをデータベースに保存する処理
2.新しいデータを入力する処理
新しいデータを入力するためには、投稿画面(入力画面)に移動する必要がある。
ルーティングを設定する。
get 'tweets/new' => 'tweets#new'
コントローラを設定する
def new
end
newアクションは、データを新たに入力するために画面に移動するためのアクションを行うだけである。そのため、モデルを経由したデータベースとのやりとりを行わないので、データベースへの処理の記述はしなくてよい。
newアクションによって、それに紐づいたビューファイルを呼び出す。このファイルが新規投稿画面となる。
3.入力した新しいデータをデータベースに保存する処理
newアクションによって呼び出された新規投稿画面に新規投稿する。その際、ビューの方であらかじめ、ルーティングが呼び出される記述をする。(今回は、form_tagを使う。)
<%= form_tag('/tweets', method: :post) do %>
これにより、新規投稿した時にルーティングが呼びだされる。
ルーティングの設定
post 'tweets' => 'tweets#create'
これにより、新規投稿した時にコントローラのcreateアクションが実行するようになる。
コントローラの設定
def create
Tweet.create(image: tweet_params[:image], text: tweet_params[:text], user_id: current_user.id)
end
createアクションは、newアクションの時とは異なり、モデルを経由してデータベースに新しくデータを保存する処理が必要となる。そのため、createアクションの中にデータベースにデータを保存するための処理を記述する必要がある。今回は、画像とテキストとuserのidをデータベースに保存する。