根据关联模型中的列计算 SUM

Calculate SUM based on a column from associated model

我有一个名为 vehicles 的 table,它有一个名为 vehicle_idprice 的列。

我有一个名为 sales 的 table,它引用了 vehicles table。它有列 vehicle_id(引用 vehicle table)和 sale_status 可以等于 'sold' 或 'loan'.

我正在尝试计算 vehicles 的总价,它等于 sales table 中的 'sold'。非常感谢您的帮助!

这是我目前拥有的,但是 returns 错误的号码。

vehicle.rb:

def self.vehicles_price_sum
  vehicles_sold.sum(:price).to_f
end

def self.vehicles_sold
  Vehicle.where(id: Sale.where(sale_status: 'Sold'))
end

您可以尝试使用子查询(这与您的解决方案很接近,但您需要为带有 selectin 子句显式提供列名,否则 sales' id 将提供专栏):

Vehicle.where(id: Sale.where(status: "Sold").select(:vehicle_id)).sum(:price)
# SELECT SUM(`vehicles`.`price`) FROM `vehicles` WHERE `vehicles`.`id` IN (SELECT `sales`.`vehicle_id` FROM `sales` WHERE `sales`.`sale_status` = 'Sold')