我使用以下内容从数据库中提取行:
@items = @product.inventory_items.where("products.hidden = ?", false)
这包含三个字段 - :regular_price
,:sale_price
和:shipping_cost
。如何按总价格对商品进行分类,以便最低的组合价格和运费首先是?
答案 0 :(得分:1)
如果您想以总销售价格订购,请尝试:
@items = @product.inventory_items.select('*, (sale_price+shipping_cost) as total_sale_price').order('total_sale_price')
同样的总正常价格。或者根据需要混合搭配。您可以根据需要在末尾添加where
子句。
为了更进一步,如评论中所述,如果regular_price
为空,我们可以使用sale_price
:
对于MySQL:
@items = @product.inventory_items.select('*, (IFNULL(sale_price, regular_price) + shipping_cost) as total_price').order('total_price')
对于Postgresql:
@items = @product.inventory_items.select('*, (COALESCE(sale_price, regular_price) + shipping_cost) as total_price').order('total_price')
答案 1 :(得分:1)
@product.inventory_items.
select(:regular_price, :sale_price, :shipping_cost,
"(regular_price + sale_price) as sum_of_prices").
order(sum_of_prices: :asc, shipping_cost: :asc)
注意:where("products.hidden = ?", false)
对我没有意义,所以我删除了它。