¿Está bien poner lógica personalizada en routes.rb?Rutas rutas lógica
Por ejemplo:
unless current_user
root :to => anonymous_page
else
root :to => logged_in_page
end
¿Está bien poner lógica personalizada en routes.rb?Rutas rutas lógica
Por ejemplo:
unless current_user
root :to => anonymous_page
else
root :to => logged_in_page
end
puede poner la lógica personalizada en las rutas ... pero como sugirió un vengador - "current_user" no funcionará debido a que cuando se carga el archivo de rutas. A veces utilizamos la lógica en nuestro archivo de ruta (por ejemplo, configurar rutas que solo están disponibles si RAILS_ENV == 'desarrollo').
Lo que probablemente quiere es un before_filter en "anonymous_page", por ejemplo:
before_filter :redirect_if_logged_in, :only => :anonymous_page
def redirect_if_logged_in
redirect_to logged_in_page if current_user.present?
end
que no funciona de esa manera. Las rutas se leen/crean al inicio del servidor, no por solicitud. Tal lógica debes ponerla en los controladores.
Usted puede usar la gema espacio libre para hacer lo que está pensando. A partir de la documentación de despacho:
Blog::Application.routes.draw do
constraints Clearance::Constraints::SignedIn.new { |user| user.admin? } do
root to: 'admin'
end
constraints Clearance::Constraints::SignedIn.new do
root to: 'dashboard'
end
constraints Clearance::Constraints::SignedOut.new do
root to: 'marketing'
end
end
Esto funciona porque aclaramiento se suma a la pila de middleware, haciendo firmado en estado disponible antes rutas se procesan.
Nota: ese dispositivo hace algo para que la magia suceda aquí: https://github.com/plataformatec/devise/wiki/How-To:-Define-a-different-root-route-for-logged-in- usuarios externos – Jonathan