有很多通过:不工作

时间:2015-10-28 11:05:01

标签: ruby-on-rails

我有很多通过协会不起作用。

Outfit有很多产品,产品有很多服装。因此我使用有很多通过。这是我的设置。

outfit.rb

WHERE agnt_name = exporter_name

product.rb

class Outfit < ActiveRecord::Base
  belongs_to :user
  has_many :outfit_products
  has_many :products, through: :outfit_products
end

outfit_product.rb这是我的中间表

class Product < ActiveRecord::Base
  belongs_to :user
  belongs_to :category
  has_many :outfit_products
  has_many :outfits, through: :outfit_products
end

Outfit.products应返回与该装备相关的所有产品。 问题是它只显示1个产品。即使我有2件产品挂在同一套装上。请参阅下文。我有2个OutfitProduct对象具有相同的Outfit id和2个不同的产品。

class OutfitProduct < ActiveRecord::Base
  belongs_to :outfit
  belongs_to :product
end

当我装备。产品只展示了1件产品? 如何让它显示所有产品?

2.1.2 :037 > OutfitProduct.all
  OutfitProduct Load (0.4ms)  SELECT "outfit_products".* FROM "outfit_products"
 => #<ActiveRecord::Relation [#<OutfitProduct id: 2, product_id: nil, outfit_id: 15, created_at: "2015-10-28 10:36:01", updated_at: "2015-10-28 10:36:01">, #<OutfitProduct id: 3, product_id: 26, outfit_id: 15, created_at: "2015-10-28 10:36:10", updated_at: "2015-10-28 10:36:10">]>

1 个答案:

答案 0 :(得分:1)

  

问题是它只显示1个产品。即使我有2个产品   与同一套装相关联

<强> 原因:

其中一条outfit_products条记录product_id nil 为同一outfit_id: 15,所以当你Outfit.find(15).products时} product_id nil 的那个被省略。