视图只输出@model中的uniq项

时间:2015-07-27 02:48:32

标签: ruby-on-rails ruby ruby-on-rails-4

因为我尝试过像.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 "####################################################"

计数返回相同的

2 个答案:

答案 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