【发布时间】:2015-12-01 10:00:17
【问题描述】:
我需要显示合作伙伴列表以及Klass 表中reservation_limit 列的最大值。
Partner has_many :klasses
Klass belongs_to :partner
# Partner controller
def index
@partners = Partner.includes(:klasses)
end
# view
<% @partners.each do |partner| %>
Up to <%= partner.klasses.maximum("reservation_limit") %> visits per month
<% end %>
不幸的是,下面的查询针对每个 Partner 运行。
SELECT MAX("klasses"."reservation_limit") FROM "klasses" WHERE "klasses"."partner_id" = $1 [["partner_id", 1]]
如果有 40 个合作伙伴,则查询将运行 40 次。我该如何优化?
编辑:看起来 Rails 中有一个 limit 方法,所以我将有问题的 limit 更改为 reservation_limit 以防止混淆。
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql rails-postgresql