如何覆盖Devise控制器路由以使用我的原始用户#create action?

时间:2012-07-19 02:07:09

标签: ruby-on-rails controller devise

我已经设计了设置,当新用户自己完成注册过程但在实现Devise之前,管理员能够创建与我的旧用户控制器相关的用户和行为。现在,当我访问我的旧表单时,我正在使用设计,新操作触发正常但当我实际提交表单时,无论我做什么,它都会转到Devise的注册控制器创建操作。我知道我可以覆盖控制器并复制我在旧用户控制器中的代码,但我想知道是否有办法阻止某些调用的这种行为?

我已经尝试专门为表单指定控制器和操作,但它什么也没做。

以下是我的路线中定义的两条相关路径:

                                         POST   /users(.:format)                                                           users#create
                       user_registration POST   /users(.:format)                                                           users/registrations#create

我是不是错了?

1 个答案:

答案 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,而另一条路径最直接引用。