2013-07-19 3 views
0

Предположим, у нас есть модель Post.Минимизирующее число db-запросов

В начале зрения мне нужно, чтобы отобразить общее количество сообщений, как правило, путем

@posts.size 

Позже в представлении мне нужно, чтобы отобразить все сообщения, как правило, с помощью

@posts.each do |post| 

end 

Это приводит к двум запросам.

Если бы я выполнил запросы в обратном порядке, это привело к одному запросу (предположительно, используя CACHE).

Есть ли какой-либо «трюк», в котором я могу выполнить (первый) упомянутый заказ только с одним запросом db?

ответ

0

Вы можете использовать, например #fragment-caching

<% cache 'posts_size' do %> 
    <%= @posts.size %> 
<% end %> 

Затем, когда Post создается вы можете истечь фрагмента

expire_fragment 'posts_size'