Rails has_many通过中间模型

问题描述:

在rails中,有没有办法获取传递模型。我们有以下模型结构。Rails has_many通过中间模型

顾客有很多购买,并且购买有很多订单。客户与订单模型之间没有直接关系。他们可以通过购买模式进行关联。现在我想获取属于客户的所有订单。有没有通过单个查询来实现这一点的方法。我们目前的模型看起来像。

Customer 
    - customer_id 

Purchase 
    - purchase_id 
    - customer_id 

Order 
    - order_id 
    - purchase_id 
    - status 

我用例是给客户对象,列出哪些是在一个特定的状态(例如状态=“完成”)一个客户的所有订单。

行SQL会看起来像

SELECT purchase_id, order_id FROM Customer c INNER JOIN Purchase p ON p.customer_id = c.customer_id INNER JOIN Order o ON o.purchase_id = p.purchase_id WHERE o.status = 'Complete'; 
+0

使用has_many:通过Association – vipin

你可以用这个做:

Order.select('purchases.id AS purchase_id, orders.id AS order_id').joins(purchase: :customer).where('orders.status = ?', 'Complete') 

我希望这可以帮助您。