<% @courses.each do |course| %>
<tr>
<th>Users</th>
</tr>
<tr>
<td>
<span><%= course.not_competent %></span> <span><%= course.novice %></span></td>
</tr>
<% end %>
这在我的课程模型中我有这个
def novice
self.courses_users.low_scores.collect{|score| score.user.username}.join(', ')
end
def not_competent
self.courses_users.really_low_scores.collect{|score| score.user.username}.join(', ')
end
问题是这种方法会运行数以千计的查询....有没有更好的方法不会降低数据库
答案 0 :(得分:1)
对@Zabba,首先尝试更改填充@courses的调用并添加类似于此params的内容
:include => [{:courses_users => :low_scores}]
或链
.includes([{:courses_users => :low_scores}])
(我认为low_scores是你模型的另一个关联)
以这种方式,Activerecord更改了您包含嵌套表的第一个查询。在此ascii_cast某个示例中。
希望它可能有用