Rails - 使用Devise gem创建新用户的操作?

时间:2013-08-21 16:17:01

标签: ruby-on-rails ruby devise controller action

我正在使用Devise,当我检查表单以便注册新用户时,在方法中设置了这个:/users

当我在注册表单中点击提交按钮后检查应用程序所在的日志时,它就在这里:

Started POST "/users" for 127.0.0.1 at 2013-08-21 18:13:11 +0200
Processing by Devise::RegistrationsController#create as HTML

但是,当我转到Registration Controller并执行操作create并对其中的所有代码进行评论时,没有错误,所有内容都已正确处理,这让我感到困惑。

为Devise gem创建新用户的代码在哪里?

1 个答案:

答案 0 :(得分:1)

您的自定义RegistrationController是为在需要时覆盖原始注册控件而构建的。

如果删除所有自定义代码,将调用gem中的原始控制器。它在加载时已经包含在应用程序中。

以下是原始代码的代码:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb

要正确覆盖,您需要在routes.rb中指定它。

  devise_for :users, :controllers => { registrations: 'users/registrations',
                                   sessions: 'users/sessions' }

然后,创建文件app/controllers/users/registrations_controller.rb

然后,使用路由中定义的命名空间命名此类,并从原始控制器继承它

class Users::RegistrationController < Devise::RegistrationsController
  def create
    if foo == bar
      # your logic
    else
      super # Call original method
    end
  end
end