我的产品型号有很多部分,部分可以属于很多产品。
剖面模型具有Feature,Standard和Option的子类。
我的模特是:
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
但它只是错误的“未定义的方法'功能'”等。
请有人能告诉我怎么做吗?
答案 0 :(得分:12)
假设您有一个名为“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
答案 1 :(得分:0)
产品没有这些方法,因为它们从未定义过。您需要在产品类中定义关系以获取功能/标准/选项方法
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
将让您更好地了解定义关系给您的内容