Hashlogのエンドポイントを作るときにルーティング迷子になったので、単純に自分がやったものをまとめておく。
アソシエーション
User -< Tags -< Tweets
のような形でネストしています。
ルーティング
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Rails.application.routes.draw do
resources :users, param: :uuid, only: [] do
collection do
resource :current, only: [], module: :users do
scope module: :current do
resources :tags, only: %i[index]
end
end
end
resources :tags, only: %i[index], module: :users
end
# resources :tagsより上に書く
namespace :tags do
resources :persistences, only: %i[index]
resources :day_counts, only: %i[index]
end
resources :tags, only: %i[index show create update destroy] do
resources :tweets, only: %i[index create]
end
end
|
エンドポイントとコントローラ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 現在ユーザーの全タグ
GET /users/current/tags users/current/tags#index
# 該当ユーザーの全タグ
GET /users/:user_uuid/tags users/tags#index
# ランキング用に並べ替えた全タグ
GET /tags/persistences tags/persistences#index
GET /tags/day_counts tags/day_counts#index
# 一般的なネストしたCRUD
GET /tags/:tag_id/tweets tweets#index
POST /tags/:tag_id/tweets tweets#create
# 一般的なCRUD
GET /tags tags#index
POST /tags tags#create
GET /tags/:id tags#show
PATCH /tags/:id tags#update
PUT /tags/:id tags#update
DELETE /tags/:id tags#destroy
|
参考
Railsのroutingにおけるscope / namespace / module の違い - Qiita