2012-05-10 5 views
1

ApplicationControllerにgeocode_ip_addressを追加しました。セッションからユーザーの位置情報を取得できます。特定のコントローラを除くgeocode_ip_address

Geokitに対してチェックしたくないコントローラがあります。それは本当にアプリケーションを遅くし、そこにジオチェックの必要はありません。その以来

geocode_ip_addressのように呼ばれなくbefore_filterように私はskip_before_filter

任意のアイデアを使用することはできませんよ?

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

はあなたのコードは、リストにするために実行したくないコントローラの名前を入れて、それ:

答えて

3

あなたはそれが結果を格納言われていること

skip_before_filter :store_ip_location 

を置くことができますので、それは実際にstore_ip_locationフィルタを使用していますサービスコールを行う前にチェックされているクッキー内のジオコード。それ以降のコールはパフォーマンスにそれほど影響しません。

-1

あなたが選択あなたがそうのようにしているコントローラに基づいてコードを呼び出すことはできませんこれらのコントローラでは呼び出されません。

また、それは、このようなコントローラのリストです定数を作成することができます。

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

私は@Martinの印象を受けていましたが、 'skip_before_filter'は使用できませんでした。なぜそれが下落されたのか分かりません。答えに問題がある場合、誰かが詳しく説明できますか? –

関連する問題