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';
答
你可以用这个做:
Order.select('purchases.id AS purchase_id, orders.id AS order_id').joins(purchase: :customer).where('orders.status = ?', 'Complete')
我希望这可以帮助您。
使用has_many:通过Association – vipin