我不知道编写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(状态为整数字段)的订单的项目
答案 0 :(得分:1)
试试这个:
Item.includes(:orders).where.not(orders: {status: [1,2,3]})
您可以使用to_sql
修改强>
要包含items
order
Item.includes(:orders).where("orders.status NOT IN(?) OR line_items.item_id IS NULL",[1,2,3])