2011-07-13 8 views
2

私は、まれにしか更新されないデータがあります。たとえば数週間に1回です。さらに、それらはユーザー間で共有され、JSONとしてレンダリングするのに時間がかかることがあります。これはキャッシュに理想的です。そこで、レンダリングされた出力をcaches_actionでキャッシュします。Rails 3:コントローラ外のキャッシュを無効にする

すぐに、私はこのデータをResqueジョブから更新し、正常に更新したらキャッシュを無効にする必要があります。私はコントローラの仕事のように思えるので、これをどこで行うべきかわからない。プレゼンテーション層の関心が高まっているので、モデルに入れるのは正しいとは言えません。 (結局のところ、JSON出力が永遠に必要なモデルの世話をする理由)

コントローラ内で動作するので、スイーパーはここではうまくいかないと思いますか?私は人々が仕事の中で問題のコントローラをインスタンス化することを提案しているのを見たことがあるが、それは本当にうまくいきません。誰もDRY-ishのやり方でこれを扱っていますか?私がそれをするために見る唯一の方法はRails.cacheを手動で操作することです。

答えて

2

オブザーバーはあなたのために働くでしょうか?オブザーバーがレコードの変更を監視し、変更後に何かを実行するように設定することができますが、主にモデルの乱雑さを軽減します。どちらの場所でもRail.cacheを使用する必要があります。オブザーバーはモデルからそのコードを消去するだけです。

チェックアウト:

http://www.daokaous.com/rails3.0.0_doc/classes/ActiveModel/Observer.html

+0

パーフェクトは、あなたに感謝します! –

関連する問題