Ignorar before_filter no Rails
Nomes e objetos foram simplificados por uma questão de clareza. O conceito básico permanece o mesmo.
Eu tenho três controladores:dog
, cat
ehorse
. Todos esses controladores herdam do controladoranimal
. No controladoranimal
, Eu tenho um filtro anterior que autentica um usuário como tal:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
Noshow
ação dedog
, Preciso ter acesso aberto a todos os usuários (pule a autenticação).
Se eu escrever a autenticação separadamente paradog
, Eu poderia fazer algo assim:
before_filter :authenticate, :except => :show
Mas desdedog
herda deanimal
, Não tenho acesso às ações específicas do controlador. Adicionando:except => :show
noanimal
controlador não somente ignorará a autenticação para oshow
ação dedog
, mas também o decat
ehorse
. Esse comportamento não é desejado.
Como posso pular a autenticação apenas para oshow
ação dedog
enquanto ainda herda deanimal
?