2012-10-04 94 views
0

我具有以下设置导轨的has_many:通过NameError

class Category < ActiveRecord::Base 

has_many :category_products 
has_many :products, through: :category_products 

end 

class Product < ActiveRecord::Base 

has_many :category_products 
has_many :categories, through: :category_products 

end 

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

在导轨控制台I尝试使用以下命令 p.category_ids =分配category_ids [1,2](其中p = Product.first)予得到

NameError: uninitialized constant Product::CategoryProduct 

有什么建议吗?

感谢

+0

原来,护栏没有为加盟模式类似“多”的名字,创造了一个新的模式称为分类和所有作品100% –

回答

0

您只需打一个错字。试试这个:

class Category < ActiveRecord::Base 
    has_many :categories_products 
    has_many :products, through: :categories_products 
end 

class Product < ActiveRecord::Base 
    has_many :categories_products 
    has_many :categories, through: :categories_products 
end 

class CategoriesProduct < ActiveRecord::Base # singular association model define 
    belongs_to :category 
    belongs_to :product 
end 

注意关联名称。

模式categories_product(无小号),这是categories_products

0

证明,轨道不喜欢的加入模型中的“多”的名字,创造了一个新的模式称为分类和一切工作100%