1

我已geocode_ip_address在 ApplicationController 中添加,因此我可以从他们的会话中获取用户位置信息。

我有一些控制器,我不希望它们根据 Geokit 进行检查。它确实会减慢应用程序的速度,并且不需要在那里进行地理检查。

因为它被称为 likegeocode_ip_address而不是 asbefore_filter我无法使用skip_before_filter

任何想法?

4

2 回答 2

3

它实际上使用了 store_ip_location 过滤器,所以你可以把

skip_before_filter :store_ip_location

话虽如此,它将地理代码的结果存储在 cookie 中,在进行服务调用之前正在检查该 cookie,因此后续调用不会对性能产生太大影响

于 2012-05-10T00:34:31.163 回答
-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
于 2012-05-10T00:30:19.550 回答