Los nombres y los objetos se han simplificado por razones de claridad. El concepto básico sigue siendo el mismo.Omitir before_filter en Rails
Tengo tres controladores: dog
, cat
y horse
. Todos estos controladores heredan del controlador animal
. En el controlador animal
, tengo un filtro antes de que autentica a un usuario como tal:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
En la acción show
de dog
, necesito tener acceso abierto a todos los usuarios (saltar la autenticación).
Si tuviera que escribir la autenticación por separado para dog
, podría hacer algo como esto:
before_filter :authenticate, :except => :show
Pero desde dog
hereda de animal
, que no tienen acceso a las acciones de controlador específico. Agregar :except => :show
en el controlador animal
no solo omitirá la autenticación para la acción show
de dog
, sino también la de cat
y horse
. Este comportamiento no es deseado.
¿Cómo puedo omitir la autenticación solo para la acción show
de dog
mientras sigo heredando de animal
?
'skip_before_filter' parece estar en desuso >> [http://apidock.com/rails/ActionController/Filters/ClassMethods/skip_before_filter#1083-deprecated-moved](http://apicock.com/rails/ActionController/ Filters/ClassMethods/skip_before_filter # 1083-deprecated-moved) Recomiendan usar 'skip_filter' que está llamando' skip_before_filter', 'skip_after_filter' y' skip_around_filter' todos juntos. – Bachet
no no es ... simplemente mueven el método a otra clase, http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando
sí se ha movido –