【问题标题】:Rails has_many through intermediate modelRails has_man 通过中间模型
【发布时间】:2016-04-04 02:51:12
【问题描述】:

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

一个客户有很多购买,一个购买有很多订单。客户和订单模型之间没有直接关系。它们可以通过购买模型链接。现在我想获取属于客户的所有订单。有没有办法通过单个查询来实现这一点。我们当前的模型看起来像。

Customer
    - customer_id

Purchase
    - purchase_id
    - customer_id

Order
    - order_id
    - purchase_id
    - status

我的用例是给定一个客户对象,列出处于特定状态的客户的所有订单(例如 status = 'Complete')。

行 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';

【问题讨论】:

  • 使用 has_many :through Association

标签: ruby-on-rails ruby-on-rails-3 activerecord has-many-through has-many


【解决方案1】:

你可以这样做:

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

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多