覆盖设计注册控制器两次?

Dan*_*iel 1 ruby-on-rails devise ruby-on-rails-4

我有两个模型,User和Admin.我想知道是否可以覆盖Devise的Registrations Controller并有两个自定义注册控制器 - 每个模型一个.

我知道可以通过覆盖注册控制器来获得我想要的东西,我只会使用If else语句,但如果我错了,请纠正我.我认为如果可能的话,最好避免使用if else语句.

你可以在另一篇文章中看到我到目前为止所做的事情 - 我有视图范围,并且出于某种原因它使用了错误的视图集.用多种模型设计视图

Ric*_*eck 7

是的,这是可能的


路线

为两个模型生成Devise时,您必须将其添加到路径中:

#config/routes.rb
devise_for :users
devise_for :admin
Run Code Online (Sandbox Code Playgroud)

Devise实际上使用这些路由来填充其参数,其中一个是controllers参数:

#config/routes.rb
devise_for :users, controllers: { sessions: "sessions", registrations: "registrations" }
devise_for :admin, controllers: { registrations: "admin/session" }
Run Code Online (Sandbox Code Playgroud)

控制器

这将允许您创建控制器以覆盖Devise默认值:

#app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
    #Your Code Here
end

#app/controllers/admin/registrations_controller.rb
class Admin::RegistrationsController < Devise::RegistrationsController
    #Your Code Here
end
Run Code Online (Sandbox Code Playgroud)