因为我尝试过像.uniq和.map这样的东西而已经坚持了一段时间但我的问题如下:
我的@products构成了我商店库存中的所有产品。
@products在尺寸,颜色等方面也有变化,我可以控制库存等。
@products的独特部分是product.sku
理想情况下,我需要根据sku显示一次产品。
任何帮助都将不胜感激。
更新: 我尝试了下面的答案,但它没有用:
@products = Shoppe::Product.where(product_category_id: 1)
puts "####################################################"
puts @products.count
puts "####################################################"
@products = @products.uniq { |product| product.sku }
puts "####################################################"
puts @products.count
puts "####################################################"
计数返回相同的
答案 0 :(得分:1)
您可以使用带有块的Array#uniq基于其属性返回唯一项:
@products.uniq {|product| product.sku}
答案 1 :(得分:1)
您可以使用ActiveRecord
distinct
方法,该方法是SQL
DISTINCT
语法的包装器。
Shoppe::Product.select(:sku).distinct
# Note that this would only bring the sku column
或者您可以在SQL
内指定select
查询,以获得更自定义的结果:
Shoppe::Product.select("DISTINCT ON (products.sku) products.*").where(product_category_id: 1)
# This one however would bring everything from products table