Rails에서 before_filter 건너 뛰기
명확성을 위해 이름과 개체가 단순화되었습니다. 기본 개념은 동일하게 유지됩니다.
나는 3 컨트롤러가 : dog, cat,와 horse. 이러한 컨트롤러는 모두 컨트롤러에서 상속됩니다 animal. 컨트롤러 animal에는 사용자를 다음과 같이 인증하는 이전 필터가 있습니다.
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
의 show작업 dog에서 모든 사용자에게 공개 액세스 권한이 있어야합니다 (인증 건너 뛰기).
에 대한 인증을 별도로 작성하려면 dog다음과 같이 할 수 있습니다.
before_filter :authenticate, :except => :show
그러나 dog에서 상속되었으므로 animal컨트롤러 별 작업에 액세스 할 수 없습니다. 추가 :except => :show에서 animal컨트롤러하면에 대한 인증 건너 뜁니다뿐만 아니라 show의 행동을 dog뿐만 아니라, 그 cat와 horse. 이 동작은 바람직하지 않습니다.
에서 상속하는 동안 의 show작업에 대해서만 인증을 건너 뛸 수있는 방법은 무엇입니까?doganimal
class Dog < Animal
skip_before_filter :authenticate, :only => :show
end
필터 및 상속에 대한 자세한 내용은 ActionController :: Filters :: ClassMethods 를 참조하십시오 .
주어진 두 대답은 절반 맞습니다. 모든 개 동작이 열리지 않도록하려면 다음과 같이 'show'동작에만 적용하도록 skip_before_filter를 한정해야합니다.
class Dog < Animal
skip_before_filter :authenticate, :only => :show
end
이를 위해 skip_before_filter를 사용할 수 있습니다.
Rails API에 설명되어 있습니다.
귀하의 예에서는 다음 dog을 포함해야합니다.
skip_before_filter :authenticate
rails 4를 사용하는 작은 업데이트는 지금 skip_before_action :authenticate, :only => :show이며 before_filters가 before_action대신 사용해야 합니다.
참고 URL : https://stackoverflow.com/questions/2390178/skip-before-filter-in-rails
'Program Tip' 카테고리의 다른 글
| 프로토 타입으로 이벤트 트리거 (0) | 2020.11.30 |
|---|---|
| django 템플릿 시스템, 모델 내부에서 함수 호출 (0) | 2020.11.30 |
| 산발적으로 발생하는 버그를 어떻게 재현합니까? (0) | 2020.11.30 |
| 프로그래밍 방식으로 현재 페이지 가져 오기 (0) | 2020.11.30 |
| HTML 캔버스 전체 화면 (0) | 2020.11.30 |