geocode_ip_address, кроме определенных контроллеров
Я добавил geocode_ip_address
в ApplicationController, чтобы я мог получить информацию о местоположении пользователя из их сеанса.
У меня есть некоторые контроллеры, которые я не хочу проверять на Geokit. Это действительно замедляет работу приложения, и нет необходимости в гео-проверке.
Так как его называют как geocode_ip_address
а не как before_filter
Я не могу использовать skip_before_filter
Любая идея?
2 ответа
На самом деле он использует фильтр store_ip_location, так что вы можете положить
skip_before_filter :store_ip_location
При этом он сохраняет результат геокода в файле cookie, который проверяется перед выполнением вызова службы, поэтому последующие вызовы не должны сильно влиять на производительность.
Вы можете выборочно НЕ вызывать код, основанный на контроллере, в котором вы находитесь, вот так:
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