9

我有一个产品模型,它有很多部分,一个部分可以属于许多产品。

截面模型具有特征、标准和选项的子类。

我的模型是:

class Product < ActiveRecord::Base  
 has_and_belongs_to_many :categories  
 has_and_belongs_to_many :sections    
end

class Section < ActiveRecord::Base  
 has_and_belongs_to_many :products
end

class Feature < Section
end 

class Standard < Section
end 

class Option < Section
end

在我的产品控制器中,我可以这样做:

@product.sections.build

我希望能够像这样访问子类:

@product.features.build

@product.standards.build

@product.options.build

但它只是“未定义的方法'功能'”等错误。

请问谁能告诉我该怎么做?

4

2 回答 2

14

假设您有一个名为“products_sections”的 has_and_belongs_to_many 连接表,您需要的是 Prodcut 模型中的这些附加关联:

class Product < ActiveRecord::Base
 has_and_belongs_to_many :sections
 has_and_belongs_to_many :features, association_foreign_key: 'section_id', join_table: 'products_sections'
 has_and_belongs_to_many :standards, association_foreign_key: 'section_id', join_table: 'products_sections'
 has_and_belongs_to_many :options, association_foreign_key: 'section_id', join_table: 'products_sections'
end
于 2012-11-18T20:49:33.577 回答
0

产品没有这些方法,因为它们从未被定义。您需要在产品类中定义关系以获取功能/标准/选项方法

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

会让你更好地理解定义关系会给你带来什么

于 2009-06-17T13:35:49.197 回答