多个连接 rails 混乱
Multiple joins rails confusion
我有以下
**User** model
has_many orders class_name: "Order", foreign_key: "buyer_id"
**Order** model
has_many :items, class_name: "OrderItem"
**OrderItem** model
belongs_to :orderable, -> { with_deleted }, polymorphic: true
所以一个用户有很多订单,每个订单包含很多OrderItems,它们有一个与 product_id
相关的“orderable_id”
我正在尝试 return 未购买特定商品的用户的用户 ID 列表
目前,我有
User.joins(:orders => :items).where("orders.status = 'success'").where("order_items.orderable_id != ?", product_id).pluck(:id)
遗憾的是,它还不够深入。
如果 OrderItem 包含有问题的 product_id,它会成功丢弃 OrderItem,但是如果任何 OrderItem 包含有问题的 product_id
,我需要完全丢弃用户
只是有点难以理解
您可以尝试这样的操作:
user_who_purchased_ids = User.joins(orders: :items).where("orders.status = 'success'").where("order_items.orderable_id = ?", product_id).pluck(&:id)
users_who_did_not_purchase = User.where('id not in ?', user_who_purchased_ids)
我有以下
**User** model
has_many orders class_name: "Order", foreign_key: "buyer_id"
**Order** model
has_many :items, class_name: "OrderItem"
**OrderItem** model
belongs_to :orderable, -> { with_deleted }, polymorphic: true
所以一个用户有很多订单,每个订单包含很多OrderItems,它们有一个与 product_id
相关的“orderable_id”我正在尝试 return 未购买特定商品的用户的用户 ID 列表
目前,我有
User.joins(:orders => :items).where("orders.status = 'success'").where("order_items.orderable_id != ?", product_id).pluck(:id)
遗憾的是,它还不够深入。
如果 OrderItem 包含有问题的 product_id,它会成功丢弃 OrderItem,但是如果任何 OrderItem 包含有问题的 product_id
,我需要完全丢弃用户只是有点难以理解
您可以尝试这样的操作:
user_who_purchased_ids = User.joins(orders: :items).where("orders.status = 'success'").where("order_items.orderable_id = ?", product_id).pluck(&:id)
users_who_did_not_purchase = User.where('id not in ?', user_who_purchased_ids)