Nazwy i obiekty zostały uproszczone ze względu na przejrzystość. Podstawowa koncepcja pozostaje taka sama.Pomiń przed_filter w szynach
Mam trzy kontrolery: dog
, cat
i horse
. Te kontrolery wszystkie dziedziczą ze sterownika animal
. W regulatorze animal
, mam przed filtr, który uwierzytelnia użytkownika, takich jak:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
w akcji dog
show
, muszę mieć otwarty dostęp do wszystkich użytkowników (pominąć uwierzytelnianie).
Gdybym miał napisać uwierzytelniania osobno dla dog
, mógłby zrobić coś takiego:
before_filter :authenticate, :except => :show
Ale ponieważ dog
dziedziczy z animal
, nie mam dostępu do działań kontrolera specyficzne. Dodanie :except => :show
w kontrolerze animal
spowoduje nie tylko pominięcie uwierzytelniania dla działania show
z dog
, ale także z cat
i . To zachowanie nie jest pożądane.
Jak mogę pominąć uwierzytelnianie tylko dla akcji z dog
, nadal dziedzicząc po animal
?
'skip_before_filter' wydaje się być przestarzał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) Polecają używać 'skip_filter', który wywołuje' skip_before_filter', 'skip_after_filter' i' skip_around_filter' razem. – Bachet
no is not .. po prostu przenoszą tę metodę do innej klasy, http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando
Tak, został przeniesiony –