これは、他のネストされたリソースを使用する場合と同じです。devise_for
ファイル内のへの呼び出しはroutes.rb
、ユーザー モデルへの RESTful ルーティングを提供しません。ネストされたリソースなしで、標準の Devise インストールのみで考えてみてください。もしそうなら、あなたはrake routes
次のようなものを手に入れるでしょう:
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
sign_in GET /sign_in(.:format) devise/sessions#new
これはユーザーのインデックス作成や表示には何も提供しないため、そのためのルートを追加する必要があります。
resources :users, only: [:index, :show]
これで次のようになります。
users GET /users(.:format) users#index
user GET /users/:id(.:format) users#show
さて、ここまで来て、ネストされたリソースを追加するだけで、Devise は気にしません。
resources :users, only: [:index, :show] do
resources :plans
end
これにより、必要な機知に富んだルーティングが可能になります
user_plans GET /users/:user_id/plans(.:format) plans#index
POST /users/:user_id/plans(.:format) plans#create
new_user_plan GET /users/:user_id/plans/new(.:format) plans#new
edit_user_plan GET /users/:user_id/plans/:id/edit(.:format) plans#edit
user_plan GET /users/:user_id/plans/:id(.:format) plans#show
PUT /users/:user_id/plans/:id(.:format) plans#update
DELETE /users/:user_id/plans/:id(.:format) plans#destroy
それだけです。Devise はこれであなたの邪魔にならないようにします。