如何使用包含或加入每种方法

时间:2017-05-16 22:49:43

标签: ruby-on-rails ruby

我需要一些关于joinincludes方法的建议。

我在索引视图中显示一个组列表。每个都有一个模态关联,在这个模态中,我想显示与该组关联的请求。通常情况下,我使用@requests = group.requests,但希望使用join只向我的数据库发送一个请求。

由于我在索引视图中,因此我的行动中没有@组。

控制器:

def index
  @groups = current_user.groups
end 

view(index):

<% @groups.each do |g| %>
  <MODAL>
    <% @requests = g.requests %>
    <% @requests.each do |r| %>
      <%= r.date %>
    <% end %>
  </MODAL>
<% end %>

我想我也可以将joininclude用于@groups,但已经有一个SQL请求,所以我很擅长。

1 个答案:

答案 0 :(得分:2)

在你的控制器中,像这样添加包括预加载请求并避免n + 1个查询。

def index
  @groups = current_user.groups.includes(:requests)
end

查看很好,但您也可以写为: -

<% @groups.each do |g| %>
  <MODAL>
    <% g.requests.each do |r| %>
      <%= r.date %>
    <% end %>
  </MODAL>
<% end %>