【发布时间】:2016-03-03 11:21:40
【问题描述】:
我想退回 N 件最畅销的产品,我的型号:
订购
has_many :order_items
订单项
belongs_to :order
belongs_to :product
quantity
到现在为止我都有这样的东西,但它不包括数量和错误,任何帮助都会很棒。
product.rb
def self.popular
products = OrderItem.group(:product_id).count
ids = products.sort_by {|k,v| v}.reverse
where(id: ids)
end
示例:
[#<OrderItem:0x007fa522727328 id: 1, order_id: 1, product_id: 1, quantity: 3>,
#<OrderItem:0x007fa5227270a8 id: 2, order_id: 2, product_id: 5, quantity: 4>,
#<OrderItem:0x007fa522726d88 id: 3, order_id: 2, product_id: 9, quantity: 9>]
期望的输出:
[#<Product:0x007fa5298f9a28 id: 3, title: 'MacBook air'>,
#<Product:0x007fa5298f9b28 id: 5, title: 'Iphone 6s'>,
#<Product:0x007fa5298f9c28 id: 1, title: 'Nexus 5'>]
【问题讨论】:
标签: ruby-on-rails arrays postgresql sorting activerecord