【问题标题】:Rails - in which action is created the new user with Devise gem?Rails - 在哪个操作中使用 Devise gem 创建新用户?
【发布时间】:2013-08-21 16:17:01
【问题描述】:

我正在使用 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 创建新用户的代码在哪里?

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 我的RegistrationController 好像被忽略了...因为我放在那里的代码没有被处理...如何覆盖默认的?
    • 谢谢,这帮助我解决了问题!
    猜你喜欢
    • 2013-04-18
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多