【发布时间】:2018-08-31 04:54:34
【问题描述】:
我正在开发一个使用 Devise 管理 User 模型的 Rails 5.2 项目。我希望用户能够自己注册,并允许管理员代表他们创建帐户。我已经使用 Devise 设置了 User 模型,并为资源生成了作用域控制器(和视图)。这涵盖了自我注册方面,为了涵盖管理员发起的注册,我创建了一个users_controller 作为标准的restful 控制器,并在路由中分别设置了一个资源路由。这似乎适用于除users#create 操作路由与devise_for 为users/registrations#create 创建的路由冲突之外的所有内容(请参阅下面生成的路由)。这会导致 users#new 表单提交被 Devise users/registrations#create 而不是 users#create 错误地处理。
让*#create 路由独一无二的最佳方式是什么?
routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations' }
resources :users
end
生成的路线
new_user_session GET /users/sign_in(.:format) users/sessions#new
user_session POST /users/sign_in(.:format) users/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) users/sessions#destroy
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel
new_user_registration GET /users/sign_up(.:format) users/registrations#new
edit_user_registration GET /users/edit(.:format) users/registrations#edit
user_registration PATCH /users(.:format) users/registrations#update
PUT /users(.:format) users/registrations#update
DELETE /users(.:format) users/registrations#destroy
POST /users(.:format) users/registrations#create
---
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
【问题讨论】:
-
您可以将 devise_scope 用于
users的自定义路由。
标签: ruby-on-rails ruby devise rails-routing