Rails 2.3中的多查询日志泛洪

时间:2011-04-10 18:58:43

标签: sql ruby-on-rails activerecord

我正在使用acts_as_category插件来管理我的类别逻辑。在网站的几乎每个页面中都会显示类别和子类别树:

<div id="categories_">
  <% Category.roots.each do |category| %>
    <h3><%= category.name %></h3>
    <div>
      <ul class="subcat">
      <% category.children.each do |subcategory| %>
        <li><%= link_to subcategory.name, "/category/#{subcategory.to_param}" %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
</div>

它会生成日志文件中显示的大量SQL查询,有没有办法在单个查询中获取多行

修改

我尝试使用相同的结果重写Category模型中的根范围:

named_scope :roots,
            :conditions => ["((hidden IS NULL OR hidden = 0) AND (parent_id IS NULL))"],
            :include => :children

修改

似乎问题出在插件上,作者在此解释(http://goo.gl/MwRSJ)为什么无法更改。 管理我的类别的任何其他建议?我已经使用过acts_as_tree,但它看起来有点过时了。谢谢!。

1 个答案:

答案 0 :(得分:1)

您所看到的是由eager loading associations解决的N + 1查询问题。

<% Category.roots(:include => :children).each do |category| %>