2012-05-10 2 views
1

ApplicationController에 geocode_ip_address을 추가 했으므로 세션에서 사용자 위치 정보를 얻을 수 있습니다.특정 컨트롤러를 제외한 geocode_ip_address

Geokit에 대해 검사를 원하지 않는 컨트롤러가 있습니다. 정말 응용 프로그램이 느려지고 지오 체크가 필요 없습니다. 그 이후

geocode_ip_address처럼 전화를하지 before_filter A와 나는 skip_before_filter

어떤 생각을 사용할 수 아니에요?

답변

3

가 실제로 store_ip_location 필터를 사용을 지오 코드는 서비스 호출을하기 전에 확인되는 쿠키 내에서 수행되므로 후속 호출이 성능에 크게 영향을 미치지 않아야합니다.

-1

당신은 선택적으로 당신은 같은에있어 컨트롤러를 기반으로 코드를 호출 할 수 없습니다 :

unless ["controller1", "controller2", "etc"].member?(params[:controller]) 
geocode_ip_address 
end 

는 컨트롤러의 이름을 넣어 당신이 코드 목록에 대한 실행하지 않으을하고 이러한 컨트롤러에서는 호출되지 않습니다.

또한이 같은 컨트롤러 목록의 일정한 만들 수 있습니다 : 당신이 그것의 결과를 저장했다되고

skip_before_filter :store_ip_location 

을 넣을 수 있도록

CONTROLLERS_TO_NOT_FILTER_BY_GEOCODE = ["controller1", "controller2", "etc"] 

unless CONTROLLERS_TO_NOT_FILTER_BY_GEOCODE.member?(params[:controller]) 
geocode_ip_address 
end 
+0

나는 그것이 실제로 효과적이라고 생각하지 않습니다. 다른 방법으로해야합니다 (특정 컨트롤러의 경우 geocode_ip_address를로드하지 마십시오). 이러한 컨트롤러 이외에는 항상 ApplicationController에 있어야합니다. – Martin

+0

@ skip_before_filter는 사용할 수 없었던 @Martin의 인상을 받고 있습니다. 그는 특히 질문에서 그렇게 지적했습니다. 나는 왜 그것이 downvoted되었는지 확신 할 수 없다. 대답에 문제가 있다면 누군가가 정교 할 수 있습니까? –

관련 문제