2009-06-16 9 views
7

Tengo un modelo de producto que tiene muchas secciones y una sección que puede pertenecer a muchos productos.Asociación HABTM asociada a herencia de tabla única

El modelo de sección tiene subclases de Característica, Estándar y Opción.

Mis modelos son:

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 

En mi controlador de productos que puedo hacer esto:

@product.sections.build 

Quiero ser capaz de llegar a las subclases que algo como esto:

@product.features.build 

@product.standards.build 

@product.options.build 

Pero solo errores con "características de método indefinido" "etc.

¿Alguien me puede decir cómo hacerlo?

Respuesta

11

Asumiendo que usted tiene una has_and_belongs_to_many unes tabla con el nombre "products_sections", lo que necesitaría son estas asociaciones adicionales en su modelo 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 
Cuestiones relacionadas