进行连接

时间:2010-08-29 20:26:54

标签: ruby-on-rails ruby

我需要有多对多的产品和类别关系

所以我有

class Category < ActiveRecord::Base
  has_many :categorizations
  has_many :products, :through => :categorizations
end

class Product < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations
end

分类的结构是这个

* PRODUCT_ID (primary key, foreign key to PRODUCTS)
* CATEGORY_ID (primary key, foreign key to CATEGORIES)
* QUANTITY

在我的控制器中,我正在通过此

创建类别和产品
@new_product = Product.create :name => "test"
@new_category = Category.create :name => "test category" 

如何连接这两个以及如何设置数量

如果我的记忆正确地为我提供了一对多,这就是它的完成方式。但随着我失去了许多对很多

@ new_product.catagory&lt;&lt; @new_category

1 个答案:

答案 0 :(得分:3)

如果您有多个具有元数据的关联(即通过多个关联),则应明确创建关联对象。

@new_product = Product.create(:name => "test")
@new_category = Category.create(:name => "test category")
@association = Categorization.create(:product => @new_product, :category => @new_category, :quantity => 5)

您没有在上面显示,但请记住,您需要为关联创建一个模型,以便将其与has_many:through一起使用。

class Categorization < ActiveRecord::Base
  belongs_to :product
  belongs_to :category
end