ActiveRecord Join,Group By,Sum,Having

时间:2014-07-25 16:42:11

标签: ruby-on-rails activerecord

鉴于以下课程

class Invoice
    has_many :line_items
end

class LineItem
    belongs_to :invoice
end

如何找到line_item总和与发票中存储的总数不匹配的发票。我能想到的最接近的猜测是:

Invoice.joins(:line_items)
       .group_by(:invoice_id)
       .select('invoice_id, sum(line_items.amount) as line_item_total')
       .having('line_item_total <> invoice.total')

我想为此创建并运行单个sql语句。但ActiveRecord似乎首先尝试选择一切。然后我得到一个'ArgumentError:错误的参数数(1为0)'

请告知正确的语法和执行单个SQL查询的方法。

0 个答案:

没有答案