명확성을 위해 이름과 개체가 단순화되었습니다. 기본 개념은 동일하게 유지됩니다.레일에서 before_filter 건너 뛰기
나는 컨트롤러가 세 개 있습니다 : dog
, cat
및 horse
입니다. 이 컨트롤러는 모두 컨트롤러 animal
에서 상속합니다. 제어기 animal
에서 는 I가 이전과 같은 사용자를 인증 필터 가지고 dog
의 show
액션
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
를, I는 (인증 략) 모든 사용자에게 공개 접근 할 필요가있다. 내가 dog
에 대해 개별적으로 인증을 작성한다면
, 나는 이런 식으로 뭔가를 할 수 :
before_filter :authenticate, :except => :show
그러나 animal
에서 dog
상속, 나는 컨트롤러 별 작업에 액세스 할 수 없습니다 때문이다. animal
컨트롤러에 :except => :show
을 추가하면 dog
동작의 인증을 건너 뛰지 않을뿐만 아니라 cat
및 horse
의 인증도 건너 뜁니다. 이 동작은 바람직하지 않습니다.
animal
에서 계승하면서 show
동작이 dog
인 경우에만 인증을 건너 뛸 수 있습니까? 그것은 당신의 예에서 Rails API
에 설명 된 것
dog
그냥 것 skip_before_filter
'skip_before_filter'는 더 이상 사용되지 않는 것 같습니다. [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) 그들은'skip_before_filter','skip_after_filter' 및'skip_around_filter'를 모두 호출하는'skip_filter'를 사용하도록 권장합니다. – Bachet
아니요 .. 그들은 단지 다른 클래스로 메서드를 이동합니다. http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando
예 이동되었습니다. –