1
我遇到了我一直在处理的查询的问题。我想包含一个条件。rails加入条件查询
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
可以有__ __ _ __ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _所以这个查询给了我不正确的结果。对困惑感到抱歉。
我正要竖起大拇指,但如果'foo' has_many:order_status和它们处于不同的状态(如某些'取消',但当前是'打开')会发生什么情况然后,他希望创建一个关联'has_one:current_order_status',如果只关心当前可能或'has_many:canceled_order_status'如果他关心它是否曾经被取消 – drhenner
@drhenner从OP的foo.order_status.code判断它的has_one,所以不要犹豫,竖起大拇指;) –
如果它是一个belongs_t o更快的查询将缓存==“取消”的'order_status_id'。然后'.where.not(foo:{order_status_id:OrderStatus.CANCELED_ID})'没有额外的order_status加入 – drhenner