如何找到相同的记录并为每个滑轨进行操作

时间:2018-08-20 17:21:43

标签: ruby-on-rails ruby-on-rails-5

我正试图解决一个巨大的问题。

上下文:电子商务主题。我有多个产品,客户可以将其添加到购物车中。每个产品可以具有多个DeliveryMod(示例:快递,低成本)。

我想每次找到产品的交付方式不同,并为每个产品创建一个LogisticalCart。结果将如下所示:

  • Product1:DeliveryMods = a和b
  • Product2:DeliveryMods = b
  • Product3:DeliveryMods = a和b

Product1和Product3具有相同的DeliveryMod,但不是Product2。

2个DeliveryMods组合,所以要创建2个LogisticalCart。 结果:2个LogisticalCart已创建。

我尝试了很多事情,但我不知道该怎么做。有什么解决办法吗?

重要提示:

Product&DeliveryMod关系是带有连接表的“ has_and_belongs_to_many”。

代码尝试(不起作用):

  @products = current_cart.products
    @products.each do |product|
      @delivery_mods = Array.new
      @delivery_mods << product.delivery_mods
      if @delivery_mods.all? { |item| item.eql?item}
        @logistical_cart = LogisticalCart.new
        @logistical_cart.save
     end
   end

1 个答案:

答案 0 :(得分:0)

  

Product1和Product3具有相同的DeliveryMods

这是否意味着Product1和Product3具有具有相同ID的delivery_mods?除了delivery_mod_ids之外,您还需要传递其他任何内容吗?请立即澄清所有详细信息:)

@products = current_cart.products
mod_ids_uniq = @products.map(&:delivery_mod_ids).uniq
mod_ids_uniq.each do |ids|
  LogisticalCart.create(delivery_mod_ids: ids)
end