我在处理一个查询时遇到问题。我想在这里面加个条件。
FooDiscount.where(bar_code_id: object.id).joins(foo: [:foo_items]).sum(:quantity)
这将返回我需要的正确数量,但我想添加一个条件到
.joins(foo: [:foo_items])
如果foo_items
更新:
早些时候我没有提到
foo.order_status.code != "cancelled"
可以有很多foo
。所以那个查询给了我不正确的结果。对不起,我有点困惑。 最佳答案
如果order_status
是一个数据库支持的模型,那么它应该是这样的(可能是单数/复数的问题,但是您得到了这个想法):
FooDiscount
.where(bar_code_id: object.id)
.joins(foo: [:foo_items, :order_statuses]) # edit joining
.where.not(order_statuses: { code: 'cancelled' }) # your condition
.sum('foo_discounts.quantity') # ensure no issues with determining,
# which table's column quantity is