Html Rails:关联表上列的总和
我有一个网站列表,每个网站都有一个域名列表。我已经总结了这些领域每个网站的成本。我接下来要做的是汇总网站的所有成本,并得到所有网站的一个总价 因此,我必须总结一下成本:Html Rails:关联表上列的总和,html,ruby-on-rails,ruby,sum,Html,Ruby On Rails,Ruby,Sum,我有一个网站列表,每个网站都有一个域名列表。我已经总结了这些领域每个网站的成本。我接下来要做的是汇总网站的所有成本,并得到所有网站的一个总价 因此,我必须总结一下成本: <% @websites.includes(:domains).each do |website| %> <%= number_to_currency website.domains.sum(:costs), :locale => :nl %> <% end %> :nl%>
<% @websites.includes(:domains).each do |website| %>
<%= number_to_currency website.domains.sum(:costs), :locale => :nl %>
<% end %>
:nl%>
这将返回:
65,00欧元12,50欧元12,50欧元12,50欧元12,50欧元25,00欧元23.435,50欧元37,50欧元0,00欧元0,00欧元0,00欧元0,00欧元0,00欧元34,00欧元
现在我需要找到一种方法来总结这些总和…获取所有网站的所有域的成本总和的最简单解决方案是:
@websites.includes(:domains).map{|website| website.domains.sum(:costs)}.sum
编辑
如果要获取数据库中所有域的成本总和,可以使用(它将只生成一个SQL查询):
获取所有网站所有域的总成本的最简单解决方案是:
@websites.includes(:domains).map{|website| website.domains.sum(:costs)}.sum
编辑
如果要获取数据库中所有域的成本总和,可以使用(它将只生成一个SQL查询):
比在Ruby中进行迭代更有效的方法是在查询中选择聚合:
@websites = Website.select('websites.*, SUM(domains.cost) AS websites.domain_costs')
.left_outer_joins(:domains)
这样就不需要将域记录加载到内存中,而且DBs在简单聚合方面比Ruby更有效
然后,您可以通过以下方式访问总和:
<% @websites.each do |website| %>
<%= number_to_currency website.domain_costs, :locale => :nl %>
<% end %>
:nl%>
比在Ruby中迭代更有效的方法是在查询中选择聚合:
@websites = Website.select('websites.*, SUM(domains.cost) AS websites.domain_costs')
.left_outer_joins(:domains)
这样就不需要将域记录加载到内存中,而且DBs在简单聚合方面比Ruby更有效
然后,您可以通过以下方式访问总和:
<% @websites.each do |website| %>
<%= number_to_currency website.domain_costs, :locale => :nl %>
<% end %>
:nl%>
collection.map{…}.sum
=>collection.sum{…}
collection.map{…}.sum
=>collection.sum{…}
能否显示表结构和模型关系?能否显示表结构和模型关系?