最小化db查询的数量

时间:2013-07-19 15:37:16

标签: ruby-on-rails activerecord

假设我们有Post模型。

在视图的开头,我需要显示帖子的总数,通常是

@posts.size

稍后在视图中我需要显示所有帖子,通常是

@posts.each do |post|  

end

这导致两个查询。

如果我以相反的顺序完成了查询,则会产生一个查询(可能是使用CACHE)。

是否有任何“技巧”我只能通过一个数据库查询来实现(第一个)提到的顺序?

1 个答案:

答案 0 :(得分:0)

您可以使用例如#fragment-caching

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

然后,当创建Post时,您可以使片段到期

expire_fragment 'posts_size'