CRUDとは
CRUDとはCreate(生成)、Read(読み込み)、Update(更新)、Delete(削除)の4つの頭文字を取った言葉で、データを操作するための最低限の機能を指します。例えば、前章のRestaurantモデルを思い出してください。
| CRUD | 意味 | 前章のRestaurantモデルに当てはめると… |
|---|---|---|
| Create | 生成 | Restaurantモデルのインスタンスを作成し、restaurant.saveでデータを保存 |
| Read | 読み込み | Restaurant.firstでレコードを呼び出し |
| Update | 更新 | 呼び出したレコードに情報を上書き保存 |
| Delete | 削除 | restaurant.deleteでレコードを削除 |
では、restaurant_guideのプロジェクトにレストランのCRUDを実装してみましょう。はじめにどんなページが必要になりそうかイメージしてみると、レストランのCRUDをひとつ作るだけでも関連するページが複数必要になるのが分かります。
- レストランの新規登録ページ
- 登録されたレストランの一覧ページ
- レストランの詳細ページ
- レストランの情報更新用ページ など
では、例えばレストランの新規登録ページのURLをhttp://localhost:3000/restaurants/newとし、ページを作成する場合にはどのような作業が必要でしょうか。通常は、routesファイルにget "restaurants/new" => "restaurants#new"を追加し、対応するcontrollerとviewを準備します。ただ一覧ページや詳細ページなど、それぞれのページ作成のためにひとつひとつroutesファイルに追記していくとコード量が膨大になり、サイトの構成が分かりにくくなってしまいます。
RailsにはCRUDの実装をスムーズに行えるように、routesを簡略化して書く方法があります。それがresources :restaurantsです。

この1行でどのようなルートが生成されているのか?確認するためにコマンドでrails routesを実行してください。

ここではget・postなどのhtmlメソッドやURIパターン(URLの集合体がURI)、それに対応するcontrollerとアクションが一覧で確認できます。
例えば1行目は「restaurantsというURLにgetメソッドでアクセスしたときには、restaurantsコントローラーのindexアクションを実行してください。」という意味です。
またhtmlメソッドに関して、get・post以外に、patch、put、deleteが登場しています。get・postのおさらいをしつつ意味を確認しましょう。
| HTTPメソッド | 用途 | routesの書き方 |
|---|---|---|
| get | データを取得する | get 'restaurants' => 'restaurants#index' |
| post | データを送信する | post 'restaurants' => 'restaurants#create' |
| patch | データを更新する | patch "restaurants/:id" => 'restaurants/update' |
| delete | データを削除する | delete "restaurants/:id" => 'restaurants/update' |
※putはpatchと同じくデータの更新を意味しますが、patchが広く使われています。
参照:Edge Rails: PATCH is the new primary HTTP method for updates
この教材はメンバー専用です
メンバー専用の教材にアクセスするには、
ハッカーIDでログインしてください。