我需要计算前10个变体的总销售额,并返回{variant_id,total_sales}的哈希值。但总销售额是计算得出的属性。
我的模特, order.rb
has_many :line_items
line_item.rb
has_one :variant
variant.rb
belongs_to :root_variant # ( a self_join assosciation )
我的查询如下,但由于它不是模型的一部分,因此无法返回计算的销售额
Spree::Variant.joins(line_items: :order).where(spree_orders: {completed_at: params[:start_date]..params[:end_date]})
.select('spree_variants.*, SUM(spree_line_items.quantity) as sales')
.group("spree_variants.root_variant_id, spree_variants.id")
.order('sales DESC').limit(10)
答案 0 :(得分:1)
您可以像这样获取它:
res = Spree::Variant.joins(line_items: :order).where(spree_orders: {completed_at: params[:start_date]..params[:end_date]})
.select('spree_variants.root_variant_id as root_variant_id, SUM(spree_line_items.quantity) as sales')
.group("spree_variants.root_variant_id")
.order('sales DESC').limit(10)
然后做
res.map{|m| { variant_id: m.root_variant_id, total_sales: m.sales } }
您假设要获取哈希数组。
让我知道这是否对您有用。
欢呼