Динамический корневой путь ресурса - PullRequest
1 голос
/ 02 апреля 2012

Я использую devise gem для аутентификации. У меня есть несколько ролей в моем проекте, таких как лаборатория, клиника, а затем хочет перенаправить соответствующие домашняя страница в зависимости от роли. такие как * перенаправить «labs # order_status», если вошедший в систему пользователь имеет роль «lab». * перенаправить «посещение # индекс», если вошедший в систему пользователь имеет роль «клиника». Я могу добиться выше, используя метод after_sign_in_path_for.

Но я не знаю, как установить эти пути в качестве ресурса root_path (например, user_root_path) после входа в систему. т.е. если после входа в систему вызывается root_path, который должен вернуть * 'labs # order_status', если вошедший в систему пользователь имеет роль 'lab'. * «посещение # индекс», если вошедший в систему пользователь имеет роль «клиника».

Я могу установить «статический» ресурс root_path для вошедшего в систему пользователя с использованием метода 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
...