我正在使用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创建新用户的代码在哪里?
答案 0 :(得分:1)
您的自定义RegistrationController是为在需要时覆盖原始注册控件而构建的。
如果删除所有自定义代码,将调用gem中的原始控制器。它在加载时已经包含在应用程序中。
要正确覆盖,您需要在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