虽然查询相关的表中找到满足Rails中

问题描述:

的情况我有两个表,车和项目虽然查询相关的表中找到满足Rails中

class Carts 
has_many :items 

end 

class Items 
belongs_to :carts 
end 

table Item 
:status string ('auto_assigned', 'deleted', 'added') 
:quantity integer 
:cart_id integer 

table Cart 
:item_limit integer 

项目可以被添加到购物车或自动分配的所有相关表。一个项目可以具有“添加”,“自动分配”或“删除”的状态。 Cart表有一个:item_limit,它是一个整数。我正在创建一个查询,它将返回所有包含“auto_assigned”项的所有购物车。令我困惑的部分是,购物车可能有比它的item_limit更多的物品:物品可能具有删除的状态并且合计物品的数量。

这里是我到目前为止,然而,这是不是在最佳速度:

carts = Cart.all 
carts.select{|i| i.items.where(status: 'auto_assigned').sum(:quantity) >= i.item_limit} 

,你可以做这样的:

Cart.includes(:items).where(status: 'auto_assigned') 

这将返回与状态项目的所有车auto_assigned。

字体: https://apidock.com/rails/ActiveRecord/QueryMethods/includes

+0

因为车可以是状态项:“添加”,这也将包括那些如果车有一个“auto_assigned”和3“添加”。我需要所有'auto_assigned'的购物车 – tnaught