我正在使用devise gem进行身份验证。 我在我的项目中有多个角色,如实验室,诊所,然后想要适当的重定向 主页取决于角色。如 *如果登录用户具有“实验室”角色,则重定向'labs#order_status'。 *如果登录用户具有“诊所”角色,则重定向'visit #index'。 我可以使用after_sign_in_path_for方法实现上述目的。
但我不知道如何在登录后将这些路径设置为资源root_path(如user_root_path) 即在登录后应该返回时调用root_path *'labs#order_status'如果登录用户具有'lab'角色。 *'如果登录用户具有'诊所'角色,请访问#index'。
我可以使用authenticated:user方法为登录用户设置'static'资源root_path 但我不知道如何设置为动态
的routes.rb
scope :path => '/clinic', :controller => :visits do
match '/' => :index, :as => :clinic_root
end
scope :path => '/lab', :controller => :labs do
match '/' => :order_status, :as => :lab_root
end
authenticated :user do
root :to => 'lab_visits#new'
end
devise_scope :user do
root :to => "devise/sessions#new"
end
unauthenticated do
as :user do
root :to => 'devise/sessions#new'
end
end
root :to => "devise/sessions#new"
application.rb中
protected
def after_sign_in_path_for(resource)
case current_user.type
when "LAB"
lab_root_path
when "CLINIC"
clinic_root_path
else
super
end
end