Ruby on rails 3 动态资源根路径

Ruby on rails 3 动态资源根路径,ruby-on-rails-3,resources,path,devise,root,Ruby On Rails 3,Resources,Path,Devise,Root,我正在使用Desive gem进行身份验证。 在我的项目中,我有多个角色,比如实验室、诊所,然后想要重定向到适当的位置 主页取决于角色。比如 *如果登录的用户具有“实验室”角色,则重定向“实验室#订单状态”。 *如果登录用户具有“诊所”角色,则重定向“访问#索引”。 我可以通过在路径中使用after_sign_for方法来实现上述功能 但我不知道在登录后如何将这些路径设置为资源根路径(如用户根路径) i、 e如果在登录后调用根路径,则应返回哪个路径 *如果登录用户具有“实验室”角色,则为“实验室

我正在使用Desive gem进行身份验证。 在我的项目中,我有多个角色,比如实验室、诊所,然后想要重定向到适当的位置 主页取决于角色。比如 *如果登录的用户具有“实验室”角色,则重定向“实验室#订单状态”。 *如果登录用户具有“诊所”角色,则重定向“访问#索引”。 我可以通过在路径中使用after_sign_for方法来实现上述功能

但我不知道在登录后如何将这些路径设置为资源根路径(如用户根路径) i、 e如果在登录后调用根路径,则应返回哪个路径 *如果登录用户具有“实验室”角色,则为“实验室#订单状态”。 *如果登录用户具有“诊所”角色,则为“访问#索引”

我可以使用authenticated:user方法为登录用户设置“静态”资源根路径 但我不知道如何设置为动态

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

看见我已经通过使用rails高级约束()和warden(request.env['warden'].user)解决了这个问题