2013-01-08 2 views
1

before_filter를 다른 필터에서 호출 할 수 있습니까? 내가 전에 부탁 한 이유는 비슷한 before_filters가 두 개 있기 때문에 하나는 여전히 사실 일 수있는 추가 조건을 가지고 있기 때문입니다. 따라서 첫 번째 before_filter가 두 번째 것보다 true 인 경우에도 true이지만 첫 번째 false이면 다른 조건이 검사 된 다음 true 또는 false로 결정됩니다.Ruby on Rails에서 before_filter를 before_filter로 호출 할 수 있습니까?

+3

두 필터를 하나의 필터로 결합하여 하나의 필터로 바꾸지 않는 이유는 무엇입니까? –

+0

필터 중 하나가 특별한 엣지 케이스이므로, 하나의 컨트롤러 동작에서만 호출되며, 다른 하나는 많은 컨트롤러에서 호출됩니다. – dmastylo

답변

1

이 필터는 그래서 귀하의 질문에 대답하기 위해, 단지 방법이 있다는 맞습니다.

두 번 렌더링하거나 리디렉션해서는 안되며 그렇지 않으면 AbstractController::DoubleRenderError이 표시됩니다. 따라서 필터 중 하나가 렌더링중인 경우 다른 필터를 호출하면 안됩니다.

관리하려면 부울 값을 사용하십시오.

-1

나는 당신이 이렇게 할 수있는 방법을 결합하고 싶지 않다면.

before_filter :filter_method 

def filter_method 
if method_one == true 
    method_two 
end 
end 

def method_one 
# stuff here 
end 

def method_two 
# stuff here 
end 
0

하실 수 있습니다. before_filter는 일반 메소드를 호출하는 트리거 일뿐입니다. 이 메소드는 다른 before_filters에 의해 호출 된 메소드조차도 다른 메소드를 호출 할 수 있습니다.

네, 다른 필터에서 필터를 호출 할 수 있습니다 :

+0

주의 사항은 필터가 종종 렌더링 또는 리디렉션된다는 것입니다. 이 일을 처리해야합니다. –