Nested Resources 時に親モデルのルーティングはしたくない
どういうことかと言うと、
User has_many Products
のような 2つのモデルがあるPOST /users/:user_id/products
のルーティングがしたい- けど、
/users/
についてのルーティングはしたくない
のような状況。より具体的には以下の感じです。
resources :users, only: [:create] do resources :products, only: [:create] end
のようにすると目的のルートも設定されるけど…
$ rake routes
POST /users/:user_id/products
POST /users # ←これがいらない
のように不要な親モデルのルートができてしまいます。
で、Rails Guides を読んでもわからずうーんとなってたところ、先輩エンジニアの id:inouetakuya が教えてくれました。
解決方法
resources :users, only: [] do resources :products, only: [:create] end
のように、親モデル側の resources の only:
オプションに空配列を指定することで実現できます。
なるほど空配列!気づきませんでした、スッキリです。
ご教示ありがとうございました!
--