Rails Active Record复杂查询

时间:2017-04-28 15:16:09

标签: ruby-on-rails activerecord

我正在使用rails构建电子商务应用程序,我有以下模型:

Order
id:
user_id:
order_status:
subtotal:

OrderItem
id:
order_id:
product_id:
unit_price:
quantity:
total_price:

Product
id:
base_price:
discount:
price:(base_price less discount)

每个用户可以有一个pending_order(order_status:1),然后此订单被视为“购物车”

然后让我们说产品得到更新的价格,或新的折扣金额。

我想识别属于待处理订单的所有order_items,并且属于要更改的产品。

这样我就可以更新这些待处理订单商品的价格。

如何编写此查询以便我可以在产品模型before_save方法中调用它?

我想要的东西(我知道这是错的,但只是为了得到一个想法):

@items = OrderItem.where(order.order_status:1).where(product_id:self.id)

我认为我需要使用.joins()但是我对如何使其工作感到失望。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这样的事情:

@items = OrderItem.joins(:order).where(product_id: 1, orders: { order_status: 1})