ruby-on-rails - ActiveRecord 查询以获取跨表的 SUM

标签 ruby-on-rails rails-activerecord ruby-on-rails-4

我有以下模型:

# == Schema Information
#
# Table name: quotes
#
#  id                      :integer          not null, primary key
#  bound_rate_id           :integer
class Quote < ActiveRecord::Base
  #snip
end

# == Schema Information
#
# Table name: rates
#
#  id                             :integer          not null, primary key
#  quoted_premium                 :integer
class Rate < ActiveRecord::Base
  #snip
end

我想创建一个查询来计算与这个循环相同的东西:

sum = 0
for quote in Quote.all
  rate = Rate.find(quote.bound_rate_id)
  sum += rate.quoted_premium
end

我如何使用 ActiveRecord 的查询接口(interface)来做这件事? (我正在使用 Rails 4。)


编辑:我已经有了以前通过 Quote 查询得到的 ActiveRecord 实例,所以我更愿意让我的查询从 quotes 表开始并加入 rates 表,而不是相反。像这样:

some_quotes = Quote.where(:some_other_property, my_param);
sum_of_rates = some_quotes.?????

最佳答案

试试这个

sum = Rate.where(:id => Quote.pluck(:bound_rate_id).compact).sum(:quoted_premium)

添加关系后试试这个

 sum = Quote.joins(:rate).sum('rates.quoted_premium') # it will get sum of all query's   quoted_premium

获取一些特定的加where子句的总和

 sum = Quote.joins(:rate).where(:bound_rate_id => [list of Rate ids]).sum('rates.quoted_premium')

如果你得到一个 Mysql2::Error: Unknown column 'rates.bound_rate_id' in 'on clause' 错误,指定 ActiveRecord 应该如何将连接放在一起

sum = Quote.joins('INNER JOIN rates ON quotes.bound_rate_id = rates.id').sum('rates.quoted_premium')

关于ruby-on-rails - ActiveRecord 查询以获取跨表的 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911603/

相关文章:

ruby-on-rails - 将 ActiveRecord habtm 查询转换为 Arel

ruby-on-rails - ruby rails : Downloading files with multiple dots in filename (uploaded using Carrierwave)

ruby-on-rails - ArticlesController 中的 ActiveRecord::RecordNotFound#show 找不到带有 'id' 的文章 =edit

ruby-on-rails - 如果可能,find_by 是否总是返回条件数组中第一个的匹配项?

ruby-on-rails-4 - Capybara 使用 xpath 填充

javascript - Rails select_tag - jQuery/JavaScript 在更改事件上隐藏/显示

ruby-on-rails - Rails 2.2.2 将表单输入字段设置为只读

ruby-on-rails - ExecJS CoffeeScript 未显示编译错误的行号(Rails Assets 管道)

ruby-on-rails - ActiveRecord/Rails 中的原子插入或增量

ruby-on-rails - 如何访问在 before 子句中创建的 has_many 模型