Rails:对单个查询的多个查询

时间:2017-06-12 14:08:07

标签: sql ruby-on-rails

我想在代码下方进行优化。因为这使页面很慢。有什么想法吗?我试图删除迭代代码,但我感到精神瘫痪。

@cart_items_count_with_purchase = cart_items.select do |item|
  item.brand_user.sub_orders.where('created_at > ? AND product_id = ?', item.added_to_cart_at, item.product_id).
                             where(order_status: OrderStatus.paid).exists?
end.count

这是我解决问题的方法。

cart_items.joins(brand_users: :sub_orders).where(sub_orders: {order_status: OrderStatus.paid}).where('sub_orders.product_id IN (?)', cart_items.pluck(:product_id))

1 个答案:

答案 0 :(得分:0)

这是一个缩小行

product_ids = cart_items.pluck(:product_id)

cart_items.joins(brand_users: :sub_orders)
  .where(sub_orders: {order_status: OrderStatus.paid, product_id: product_ids})