こんにちは、Shinyaです
今回はRuby on Railsを使うなら必ず使うことになるルーティング設定の便利メソッドであるresourcesについてお伝えします
resourcesを使うとCRUD処理も瞬時に作れるようになりますから、まだ知らない人は必見です
CRUD処理の説明もするので分からない人も安心してください
この記事を読んで分かること
- CRUD処理
- resources
- ルーティングの確認方法(補足)
CRUD処理とは
CRUD処理とはデータベースを扱うシステムに必要な4つの処理機能のことです
- Create(データを新規作成する)
- Read(データを読み込む)
- Update(データを更新する)
- Delete(データを消す)
データベースとは個々のデータが登録された一つの大きな箱と言えます

Createはデータベースに対して新しいデータを登録する作業です
Readはユーザーがデータを見られるようにデータベースからデータを取り出して表示する作業です
Updateはデータベースに登録されたデータ内容を変更する作業です
Deleteはデータベースに登録されたデータを削除する作業です
**************
自分がとあるシステム上でデータを扱っているとして、少し想像してください
もしデータベースにデータを登録できなかったら、
もしデータベースのデータを見られなかったら、、
もしデータベースのデータを変更できなかったら、、、
もしデータベースのデータを削除できなかったら、、、、
超不便ですよね(笑)
だからCRUD処理はデータベースを扱うシステム(Ruby on Rails含む)に必須の機能なのです
resourcesとは
resourcesとはRailsでよく使う7種類のルーティングを一括で設定できるメソッドです
resourcesの使い方
Rails.application.routes.draw do
resources :users
end
users
の部分はルーティングを設定したいモデル名(複数形)にします
例えばPostモデルを対象にしたければresources :posts
とします
たったこれだけで対象のモデルに関する7つのルーティングがセットされます
resourcesで一括設定できるルーティング
resources :users
とした場合
パスを指定する ヘルパー |
http メソッド |
パス | コントローラー | アクション |
users_path | GET | /users | users | index |
users_path | POST | /users | users | create |
new_user_path | GET | /users/new | users | new |
edit_user_path | GET | /users/:id/edit | users | edit |
user_path | GET | /users/:id | users | show |
user_path | PATCH | /users/:id | users | update |
user_path | DELETE | /users/:id | users | destroy |
resourcesを使うとこの基本的な7つのルーティングが一括設定されます(ただし、コントローラー内のアクションと対応するビューまでは自動生成されないので、それらは自分で書く必要があります)
アクションのcreate、show、update、destroyはCRUD処理に対応するアクションとして使えるので、効率的にCRUD処理を実装できます
パスを指定するヘルパーとは
「パスを指定するヘルパー」は実際のパスを指定するものなので、実際のパスの代わりに使うことができます
例えば<%= link_to "ユーザーを新規作成", new_user_path %>
は<%= link_to "ユーザーを新規作成", "/users/new" %>
と同じ意味になります
このヘルパーを使うと、いちいちパスを覚える必要がなくなり、表記も簡潔になるのでエラーが減ります
ルーティングの確認方法(補足)
カレントディレクトリが対象のプロジェクトの状態のターミナルでrails routes
と打つと、 現在設定されているすべてのルーティングを確認できます
こんな感じでターミナルに表示されます↓
Prefix Verb URI Pattern Controller#Action
root GET / users#index
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
このPrefixの列の文字に"_path"をつけるとパスを指定するヘルパーとして使えます(表で確認してみてくださいね)
ちなみにこのときのroutes.rbはこれです↓
Rails.application.routes.draw do
root to: 'users#index'
resources :users
end
以上がresourcesについてでした。CRUD処理とセットで理解しておくと使い方がよく分かると思います!
それでは、また