我正在尝试优化(限制)视图中的查询。我正在使用fields_for函数。我需要引用对象的各种属性,例如用于显示目的的用户名。但是,这是一个 rel 表,所以我需要加入我的 users 表。结果是 N 个子查询,fields_for中的每个字段都有 1 个。这很难解释,但我想如果我粘贴我的代码,你会明白我在问什么:
<%= form_for @election do |f| %>
<%= f.fields_for :voters do |voter| %>
<%= voter.hidden_field :id %>
<%= voter.object.user.preferred_name %>
<% end %>
<% end %>
我有大约 10,000 个用户,而且很多时候每次选举都会包括所有 10,000 个用户。每次加载此视图时,就有 10,000 个子查询。我希望fields_for加入用户。这可能吗?
我想做类似的事情:
...
<%= f.fields_for :voters, :joins => :users do |voter| %>
...
<% end %>
...
但这当然行不通:(