2011-05-15 14 views
34

Estoy utilizando el dispositivo para la autenticación y tengo algunos filtros_antes en el controlador de mi aplicación. El problema que estoy viendo es que cuando intento cerrar la sesión, el before_filter intercepta eso y me mantiene en la vista que he configurado en el before_filter. ¿Hay alguna manera de especificar qué controladores deberían excluirse del controlador de la aplicación o algún otro archivo?Especifique qué controladores excluir de before_filter

Respuesta

74

Puede calificar un filtro con :only o :except.

before_filter :filter_name, :except => [:action1, :action2] 

O si el filtro (ya que ahora veo es el caso en su situación) se define en ApplicationController y desea prescindir de ella en un controlador de subclase, se puede utilizar un skip_before_filter con las mismas calificaciones en la subclase controlador:

skip_before_filter :filter_name, :except => [:action1, :action2] 
97

en el controlador donde desea omitir un antes filtro especificado en un controlador heredado, se puede decir rieles para saltarse el filtro

class ApplicationController 
    before_filter :authenticate_user! 
end 

class SessionsController < ApplicationController 
    skip_before_filter :authenticate_user! 
end 
+0

gracias por esto .. – Orlando

+2

Esto presenta una respuesta a la pregunta original de una manera más clara, sin embargo 'skip_before_filter: filter-name,: except => [: action1,: action2]' de la respuesta aceptada es un gran ¡propina! – colsen

+0

@Jesse Wolgamott ¿Qué pasa si el controlador donde quiero omitir el filtro anterior vive en una joya? ¿Hay alguna manera de especificar en el before_filter algo más que solo acciones? – hunteros

1

respuestas anteriores son buenas, excepto: DEPRECATION WARNING: skip_before_filter is deprecated and will be removed in Rails 5.1. Use skip_before_action instead.

Así que por favor utilice before_action y skip_before_action en lugar de *-filter.

Cuestiones relacionadas