私はRailsアプリケーションでユーザーがページにアクセスするたびに、データベースからThingyを送信する必要があります。データベースがThingiesを使い果たした場合、より多くのものを生成するには高価な処理を行わなければなりません。の後に、コントローラのフィルタを動的に追加してを生成し、ページの読み込み時間に影響を与えないように応答します。ここに私のコントローラは次のようになります。コントローラーアクション内で、フィルターをRailsに動的に追加するにはどうすればよいですか?
私はこれを実現するためにget_a_thingy
機能を追加することができますどのような class ThingyController < ApplicationController
def get_a_thingy
if Thingy.count <= 5
# Only five thingies left! we need to generate some more.
# I want to dynamically send a block to an after_filter: here to
# generate thingies after the controller sends the response
# because generating thingies is really slow
end
# Pop the first thingy from the database and return
thingy = Thingy.first
thingy.delete
return thingy.content
end
?
私も驚いていましたが、 'thingy.delete'はうまくいくようです。私は、通常の方法でフィルタを追加する必要があると感じていました。アクションが「get_a_thingy」の場合にのみフィルタを実行できる方法はありますか?コントローラが実行するすべてのアクションに対してThingy.countを照会する必要はありません。ありがとう! – ukoki
haha nevermind ..私自身の質問に答えました: 'after_filter:generate_new_thingies、:only =>:get_a_thingy' – ukoki