我有以下型号:
User
Athlete < User
Coach < User
在我的路线中,我有以下内容:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "registrations" }
我想为每个sign_up
路径创建一条路线(即:/ sign_up / coach,/ sign_up / athlete)...我应该创建两个不同的注册控制器,还是有办法做到这一点只有一个注册控制器?
答案 0 :(得分:1)
您可以使用单个注册控制器执行以下操作:
class UsersController < Devise::RegistrationsController
private
def resource_class
params[:type].present? ? params[:type].classify.constantize : super
end
end
您还需要做一些其他的调整。无论这是否值得,我想这取决于模型实际上有多相似。
希望它有所帮助!
答案 1 :(得分:0)
如果你为教练和运动员创建单独的控制器会很好:
devise_for :coach, :controllers => { :registrations => "coach_registrations" }
devise_for :athlete, :controllers => { :registrations => "athlete_registrations" }
class CoachRegistrationsController < Devise::RegistrationsController
end
class AthleteRegistrationsController < Devise::RegistrationsController
end
感谢。