我有两个型号,User和Admin。我想知道是否可以覆盖Devise的注册控制器并拥有两个自定义注册控制器 - 每个模型一个。
我知道可以通过覆盖注册控制器来获得我想要的东西,但我会使用If else语句,但如果我错了,请更正我。我认为如果可能的话,最好避免使用if else语句。
你可以在另一篇文章中看到我到目前为止所做的事情 - 我有视图范围,并且出于某种原因它使用了错误的视图集。 Devise Views with Multiple Models
答案 0 :(得分:7)
是的,这是可能的
<强>路线强>
为两个模型生成Devise时,您必须将其添加到路线中:
#config/routes.rb
devise_for :users
devise_for :admin
Devise实际上使用这些路由填充其参数,其中一个是controllers
参数:
#config/routes.rb
devise_for :users, controllers: { sessions: "sessions", registrations: "registrations" }
devise_for :admin, controllers: { registrations: "admin/session" }
<强>控制器强>
这将允许您创建控制器以覆盖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