我需要一些关于join
和includes
方法的建议。
我在索引视图中显示一个组列表。每个都有一个模态关联,在这个模态中,我想显示与该组关联的请求。通常情况下,我使用@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 %>
我想我也可以将join
和include
用于@groups
,但已经有一个SQL请求,所以我很擅长。
答案 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 %>