我遇到了一个问题,我一直在努力。我想用这个包含一个条件。
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_statuses
。所以这个查询给了我不正确的结果。对困惑感到抱歉。
答案 0 :(得分:1)
如果order_status
是db支持的模型,它应该是这些行的东西(可能是单数/复数的问题,但你明白了):
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