2012-04-04 12 views
0

例外時のキャッシュを防止するにはどうすればよいですか?検索は、キャッシュされたActionRecord :: RecordNotFoundの何もクラッシュした場合Ruby on Railsでの例外時のキャッシュ防止

caches_page :index 
... 
def index 
    if params[:city] 
    city = City.find(params[:city]) 
    @shows = city.shows 
    else 
    @shows = Show.all 
    end 
... 

- それは大丈夫です。私はこのアクションを持っています。しかし、私はこの例外を私のログファイルにも入れたくありません。しかし、もし私が:

begin 
    city = City.find(params[:city]) 
    rescue ActiveRecord::RecordNotFound 
    render :nothing => true 
    return 
    end 

キャッシュされた空のページ!

私はこの状況で何をすると思いますか?

答えて

0

試してみてください。

caches_page :index, :if => :city_exists? 

private 

def city_exists 
    city = City.find(params[:city]) 
    !city.nil? ? true : false 
end 

そして、私はあなたがアクションキャッシュまたは断片のキャッシュを使用することができると思います。

Extending Cachingの詳細をご覧ください。

+0

私は都市のショーでjsonページをキャッシュしています。私はページキャッシュが最良の選択だと思っています。しかし、あなたのソリューションは、都市(私は私のコントローラでそれを必要とする)のために1つの追加のデータベース要求を必要とする - 私は他のオプションがあります... – Donotello

+1

希望そうです。フラグメントキャッシュの使用を提案する。 http://broadcastingadam.com/2011/05/advanced_caching_in_railsをご覧ください – Vik

関連する問題