Sql Rails 2.3中的多查询日志洪水

Sql Rails 2.3中的多查询日志洪水,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我使用插件来管理我的分类逻辑。在网站的几乎每个页面中,类别和子类别树都显示: <div id="categories_"> <% Category.roots.each do |category| %> <h3><%= category.name %></h3> <div> <ul class="subcat"> <% category.children.each

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

<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>
编辑:


问题似乎出在插件上,作者在这里解释了()为什么不能更改插件关于管理我的类别还有其他建议吗?。我使用了acts_as_tree,但它似乎有点过时。谢谢

您看到的是N+1查询问题,该问题由解决

:儿童)。每个do |类别|%>

Eager loading可以解决问题,但您的示例在Rails 2中不起作用。3@Beerlington,谢谢,错过了OP使用的是2.3。更新以反映这一点(尽管我可能仍然错了,自从我使用2.3已经有一段时间了)事实上,插件不支持:include参数,可能在模型中重写它?@benoror您可能必须向插件作者提交功能请求,或者不幸的是,您自己编写更改。由于使用了关系,Rails 3也可能不会出现此类问题。插件作者的解释:
named_scope :roots,
            :conditions => ["((hidden IS NULL OR hidden = 0) AND (parent_id IS NULL))"],
            :include => :children
<% Category.roots(:include => :children).each do |category| %>