我在ApplicationController中添加了geocode_ip_address
,因此我可以从其会话中获取用户位置信息。
我有一些控制器,我不希望它们与Geokit进行核对。它确实减慢了应用程序,并且不需要在那里进行地理检查。
由于它被称为geocode_ip_address
而不是before_filter
,我无法使用skip_before_filter
有什么想法吗?
答案 0 :(得分:3)
它实际上使用了store_ip_location过滤器,因此您可以使用
skip_before_filter :store_ip_location
据说它将地理代码的结果存储在正在进行服务调用之前检查的cookie中,因此后续调用不会影响性能
答案 1 :(得分:-1)
您可以根据您所在的控制器选择性地不发送代码:
unless ["controller1", "controller2", "etc"].member?(params[:controller])
geocode_ip_address
end
将不希望代码运行的控制器的名称放在列表中,并且不会在这些控制器中调用它。
您还可以创建一个常量,这是一个像这样的控制器列表:
CONTROLLERS_TO_NOT_FILTER_BY_GEOCODE = ["controller1", "controller2", "etc"]
unless CONTROLLERS_TO_NOT_FILTER_BY_GEOCODE.member?(params[:controller])
geocode_ip_address
end