Rails 4选择与AR CollectionProxy相关的uniq对象

时间:2017-03-23 19:24:48

标签: ruby-on-rails performance activerecord

我正在处理购物车,里面有很多产品。这些产品可以由多家不同的公司销售。我要做的是选择唯一的公司,这样我就可以为每个供应商创建一个订单。

hack

companies = []
@cart.products.each { |p| companies << p.company }
companies.uniq
#create order for each company

我不确定#pluck是否应该在这里使用,但我知道必须有一种更有效的方式来“独特地”收集我的公司。 #uniq似乎对我不起作用,@cart.products.pluck(:company)

也没有

我的出价模式中没有:company_id,这是has_many/has_one关系

1 个答案:

答案 0 :(得分:1)

pluck用于检索提供的列中的值数组,如: @cart.products.pluck(:company_id) # => [1,2,3]

对于收集公司,您可以companies = @cart.products.collect(&:company).uniq