があるかもしれません1)パフォーマンス、2)努力が必要です。どちらも簡単に対処されます。
Andrei S氏の答えによると、ApplicationController
クラスの作業を行うメソッドを呼び出すbefore_filter
を使用すると、便宜/労力の問題が緩和されます。
パフォーマンスの問題はわずかです。代わり
def most_recent_posts
Posts.order(created_at DESC).limit(3)
end
である方法のではなく、ゼロのインスタンス変数をチェックし、この
def most_recent_posts
@most_recent_posts ||= Posts.order(created_at DESC).limit(3)
end
を行います。 nilの場合、クエリを実行し、その結果をインスタンス変数に代入します。
はまた、新しいポストが
def clear_most_recent_posts!
@most_recent_posts = nil
end
のようなので、おそらく、何かを追加して、ちょうどテーブルを変更する方法(複数可)からclear_most_recent_posts!
をコールされたときに更新する方法が必要になります。 before_filter
は、必要なときにのみ作業を行います。
私はいくつかのより多くの雄弁rubyistはこれを行うためのよりよい方法を持って確信しているが、これはアイデアです。