rails instalar for different change ruby-on-rails devise callback

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.