Les noms et les objets ont été simplifiés pour des raisons de clarté. Le concept de base reste le même. J'ai trois contrôleurs: dog
, cat
et horse
. Ces contrôleurs héritent tous du contrôleur animal
. Dans le contrôleur animal
, j'ai un filtre avant qui authentifie un utilisateur en tant que tel:Ignorer before_filter dans Rails
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
Dans l'action show
de dog
, je dois avoir un accès libre à tous les utilisateurs (sauter l'authentification).
Si je devais écrire l'authentification séparément pour dog
, je pouvais faire quelque chose comme ceci:
before_filter :authenticate, :except => :show
Mais depuis dog
hérite de animal
, je n'ai pas accès aux actions spécifiques au contrôleur. Ajoutant :except => :show
dans le contrôleur animal
non seulement passera l'authentification pour l'action show
de dog
, mais aussi celle de cat
et horse
. Ce comportement n'est pas souhaité.
Comment puis-je ignorer l'authentification uniquement pour l'action show
de dog
tout en héritant de animal
?
'skip_before_filter' semble être dépréciée >> [http://apidock.com/rails/ActionController/Filters/ClassMethods/skip_before_filter#1083-deprecated-moved](http://apidock.com/rails/ActionController/ Filters/ClassMethods/skip_before_filter # 1083-deprecated-moved) Ils recommandent d'utiliser 'skip_filter' qui appelle' skip_before_filter', 'skip_after_filter' et' skip_around_filter' tous ensemble. – Bachet
non n'est pas .. ils ne font que déplacer la méthode vers une autre classe, http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando
oui il a été déplacé –