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