0
1

Rails resourcesとは(実務に向けた解説)

Last updated at Posted at 2021-07-20

resoucesとは

Railsで定義されている7つのアクションのルーティングを自動で作成するメソッドです。
resoucesを使うことで簡単にルーティングを作成できる.

routes.rb
Rails.application.routes.draw do
  resources :コントローラー名
end

・Railsで定義されている7つのアクション

アクション名 役割
index リソースの一覧を表示させる
show リソースの詳細を表示させる
new 投稿フォームを表示させる
create リソースを追加させる
edit 更新フォームを表示させる
update リソースを更新させる
destroy リソースを削除する

例えばusersなら

routes.rb
Rails.application.routes.draw do
  resources :users
  root 'users#index'
end

usersリソースに対する以下のような7つの標準的なアクションに対するルーティングが生成されます。
idは今回は1ということにします。

HTTPリクエストメソッド URL アクション 用途
GET /users index すべてのユーザーを一覧するページ
GET /users/1 show id=1のユーザーを表示するページ
GET /users/new new 新規ユーザーを作成するページ
POST /users create ユーザーを作成するアクション
GET /users/1/edit edit id=1のユーザーを編集するページ
PATCH /users/1 update id=1のユーザーを更新するアクション
DELETE /users/1 destroy id=1のユーザーを削除するアクション

引用  https://railstutorial.jp/chapters/toy_app?version=7.0#table-demo_RESTful_users

複数のコントローラーなら

複数のコントローラーのルーティングを下のように一行で定義することができます。

routes.rb
Rails.application.routes.draw do
  resources :コントローラー名, :コントローラー名
end

# (例)officesコントローラーとusersコントローラーの7つのアクションのルーティングが作られる
  resources :offices, :users

現場ではonlyもよく使われる

resourcesでonlyオプションを使用すると、生成されるルートが特定のアクションに制限されます。onlyは、不要なルートを生成せずに、特定のアクションだけを含むルートを生成する時に使います。

resources :users, only: [:index, :show]

みたいな感じです。具体的なコードで見ていきます。コードはChatGPT参照。
resourcesメソッドを使用したルーティングの具体例で、
この例では、articlesというリソースに対するRESTfulなルーティングを考えです。

routes.rb
Rails.application.routes.draw do
  # "articles" リソースに対する全てのRESTfulなルートを生成
  resources :articles

  # "comments" リソースに対する特定のルートだけを生成
  resources :comments, only: [:index, :show, :new, :create]

  # "authors" リソースに対するルートを "destroy" を除いて生成
  resources :authors, except: [:destroy]

  # "reviews" リソースに対するカスタムな名前のルートを生成
  resources :reviews, path: 'opinions', controller: 'feedback'

  # "posts" と "comments" のネストされたルートを生成
  resources :posts do
    resources :comments
  end

  # "profiles" リソースに対するルートをカスタムコントローラーで生成
  resources :profiles, controller: 'users_profiles'

  # "tags" リソースに対する特定のフォーマットの制約を追加
  resources :tags, format: true

  # その他のカスタムなルート
  get 'dashboard', to: 'dashboard#index'
end
0
1
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
1