ruby-on-rails - instalar - rails devise role
¿Cómo hago una acción previa para ejecutarse en todos los controladores y acciones excepto uno? (1)
Lo que tienes que hacer es configurar autheticate_user! en todos los controladores así:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
Y luego en tu HomeController haces eso:
class HomeController < ApplicationController
skip_before_action :authenticate_user!, only: [:index]
...
end
Espero que esto te ayudará !
Tengo una aplicación Rails 4.2.x, con un dispositivo para la autenticación, tengo varios controladores.
Quiero el dispositivo authenticate_user! Método que debe ejecutarse en todos los controladores y acciones, excepto en la acción de índice del controlador doméstico. (Por supuesto, authenticate_user! Se encarga de que las acciones de inicio de sesión como el inicio de sesión)
Puedo asegurarme de que cada acción del controlador ejecute la acción_regenta en application_controller.rb:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end
También puedo restringir un conjunto específico de acciones en todos los controladores:
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
...
end
Pero no veo cómo hacer solo home / index para ser una excepción.
Podría, por supuesto, agregar manualmente before_action :authenticate_user!
a cada controlador, y agregue una excepción al controlador de inicio para la acción de índice. Pero esto no es muy seco, y si agrego nuevos controladores, debo recordar agregar esto antes de cada acción.