Rails左边加入条件

时间:2016-05-04 13:41:45

标签: sql ruby-on-rails postgresql join activerecord

我不知道编写activerecord查询以选择必要数据的好方法。 我有Customer表,有很多项

Customers(id)

项目表,属于客户(一个客户可以拥有一个项目,那么此项目可以属于另一个客户,因此customer_id是当前客户)

Items(id, price, customer_id)

订单项(联接表:多对多订单项目)

LineItems(id, item_id, order_id, price, quantity)

通过line_items订购has_many项目。

Orders(id, total, status, customer_id)

好吧,我想获取所有未包含状态1,2,3(状态为整数字段)的订单的项目

所以我需要加入客户和项目,然后通过line_items表离开加入条件(状态不包括......)的订单。我如何通过ActiveRecord实现它。或者SQl。顺便说一句:我使用psql。 感谢。

问题是好的,我想获取所有未包含状态1,2,3(状态为整数字段)的订单的项目

1 个答案:

答案 0 :(得分:1)

试试这个:

Item.includes(:orders).where.not(orders: {status: [1,2,3]})

您可以使用to_sql

检查生成的SQL

修改

要包含items

order
Item.includes(:orders).where("orders.status NOT IN(?) OR line_items.item_id IS NULL",[1,2,3])