shallow: true オプション
ルーティングファイル内でshallow: trueオプションを見かけることはあったのですが、何者なのかよく分かっていなかったので調べました!
shallow: true オプションとは
ネストしたパスを作る際にshallow: trueオプションを付けることで、
show/edit/update/destroyのように親レコードのidが無くても実行できるアクションはネストしないパスを生成してくれます!
index/new/createのように親レコードのidが分からないと実行できないアクションはネストしたパスを生成してくれます。
使ってみる
- shallow: tureをつけない
Prefix Verb URI Pattern Controller#Action
reviews GET /reviews(.:format) reviews#index
POST /reviews(.:format) reviews#create
new_review GET /reviews/new(.:format) reviews#new
edit_review GET /reviews/:id/edit(.:format) reviews#edit
review GET /reviews/:id(.:format) reviews#show
PATCH /reviews/:id(.:format) reviews#update
PUT /reviews/:id(.:format) reviews#update
DELETE /reviews/:id(.:format) reviews#destroy
review_comments GET /reviews/:review_id/comments(.:format) comments#index
POST /reviews/:review_id/comments(.:format) comments#create
new_review_comment GET /reviews/:review_id/comments/new(.:format) comments#new
edit_review_comment GET /reviews/:review_id/comments/:id/edit(.:format) comments#edit
review_comment GET /reviews/:review_id/comments/:id(.:format) comments#show
PATCH /reviews/:review_id/comments/:id(.:format) comments#update
PUT /reviews/:review_id/comments/:id(.:format) comments#update
DELETE /reviews/:review_id/comments/:id(.:format) comments#destroy
- shallow: tureつける
Prefix Verb URI Pattern Controller#Action
reviews GET /reviews(.:format) reviews#index
POST /reviews(.:format) reviews#create
new_review GET /reviews/new(.:format) reviews#new
edit_review GET /reviews/:id/edit(.:format) reviews#edit
review GET /reviews/:id(.:format) reviews#show
PATCH /reviews/:id(.:format) reviews#update
PUT /reviews/:id(.:format) reviews#update
DELETE /reviews/:id(.:format) reviews#destroy
review_comments GET /reviews/:review_id/comments(.:format) comments#index
POST /reviews/:review_id/comments(.:format) comments#create
new_review_comment GET /reviews/:review_id/comments/new(.:format) comments#new
edit_comment GET /comments/:id/edit(.:format) comments#edit
comment GET /comments/:id(.:format) comments#show
PATCH /comments/:id(.:format) comments#update
PUT /comments/:id(.:format) comments#update
DELETE /comments/:id(.:format) comments#destroy
感想その他
ルーティングをネストさせ、パスで親レコードのidを渡すこともあれば、別の方法で渡すこともあるので、よい使い分けについても今度考えてみたいです。