Я использую 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