Я бы порекомендовал использовать before_filter, но также кэшировать ваш результат в memcached. Если вы собираетесь выполнять это действие для каждого запроса, лучше всего сделать что-то вроде этого:
class ApplicationController
before_filter :fetch_tags
protected
def fetch_tags
@tags = Rails.cache.fetch('tags', :expires_in => 10.minutes) do
Tag.all
end
end
end
Это обеспечит кэширование ваших тегов в течение определенного периода времени (например, 10 минут), так что вам придется делать этот запрос только раз в 10 минут, а не на каждый запрос.
Затем вы можете отобразить свои теги на боковой панели, например, если у вас есть частичная _sidebar, которая отображается в ваших макетах, вы можете сделать следующее.
#_sidebar.html.erb
render @tags