Dynamiczny wybór kontrolera

Problem:
Gdy użytkownik jest zalogowany chciałbym, żeby root_path prowadził na ‘dashboard#index’.
W innym wypadku root_path powinien prowadzić na ‘welcome#index’.
Da się to łatwo rozwiązać wskazując na jeden z tych kontrolerów (albo na jeszcze trzeci) i odpowiedni redirect w zależności od sytuacji.
Czy istnieje jakakolwiek możliwość dynamicznego wyboru kontrolera i akcji, np poprzez podanie jakiejś lambdy w routingu?

jeżeli używasz devise:

#routes.rb

[code]

authenticated :user do
root to: “dashboard#index”, as: :authenticated_root
end

unauthenticated do
root to: “welcome#index”, as: :unauthenticated_root
end[/code]
#aplication_controller.rb

[code]

def after_sign_in_path_for(user)
authenticated_root_url
end

def after_sign_out_path_for(user)
unauthenticated_root_url
end[/code]

Dzięki za dobry trop. Odpowiedzią na moje pytanie jest http://viget.com/extend/using-routing-constraints-to-root-your-app (to wykorzystuje Devise).
Temat do zamknięcia.