我已经设计了设置,当新用户自己完成注册过程但在实现Devise之前,管理员能够创建与我的旧用户控制器相关的用户和行为。现在,当我访问我的旧表单时,我正在使用设计,新操作触发正常但当我实际提交表单时,无论我做什么,它都会转到Devise的注册控制器创建操作。我知道我可以覆盖控制器并复制我在旧用户控制器中的代码,但我想知道是否有办法阻止某些调用的这种行为?
我已经尝试专门为表单指定控制器和操作,但它什么也没做。
以下是我的路线中定义的两条相关路径:
POST /users(.:format) users#create
user_registration POST /users(.:format) users/registrations#create
我是不是错了?
答案 0 :(得分:1)
通常,当我使用设计时,我将为与用户相关的管理CRUD创建一个单独的控制器。类似的东西:
# /app/controllers/admin
class Admin::UsersController < ApplicationController
# your controller actions
end
# config/routes
namespace :admin do
resources :users
end
我发现将它分开使得它更易于维护并减少头痛。
<强>更新强> Devise添加了自己的路由和路由助手,因此你的user_registration_path和POST / users被设计中给出的路由所取代,在这种情况下,它也是对/ users的POST。您可以在github上找到这些路由的来源:https://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb
附注:您在问题中引用的两条路径是相同的,只有第二条路径可以通过路径助手访问,即user_registration_path或user_registration_url,而另一条路径最直接引用。