rails使用条件

时间:2016-09-23 21:17:03

标签: mysql ruby-on-rails activerecord

我遇到了一个问题,我一直在努力。我想用这个包含一个条件。

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。所以这个查询给了我不正确的结果。对困惑感到抱歉。

1 个答案:

答案 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