0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CRUD機能のC(Create)の仕組み

Posted at

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をデータベースに保存する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?