我试图找到最畅销的商品。一个项目有id
和price
。它是has_many
ItemOrders,belongs_to
项目并且item_id
。我试过了......
Item.select('items.*, COUNT(item_orders.item_id) AS item_count')
.joins(:item_orders)
.group('items.id')
.order('SUM(item_count * items.price) DESC')
我真的没有看到断开连接的位置。我之前做过类似的事情要快得多。所有我回来的都是关系对象。我试图获取一个Item对象数组。
EDIT 如果我取出乘法它会返回项目数组,但我不认为它是最重要的项目,因为它只是对具有该ID的连接记录的计数。
答案 0 :(得分:0)
想想我已经明白了。如果这是正确的话,我一如既往地思考,哈哈。
def self.top_items(quantity=nil)
Item.select('items.*, sum(item_orders.item_id * items.price) as sum')
.joins(:item_orders)
.group(:id)
.order("sum desc")
.limit(quantity)
end
我可能在乘以item_orders.item_id
items.price