Buenas! Tengo una duda acerca de como modelar un producto en ActiveRecord

Necesito generar productos que tienen 3 caracteristicas distintivas:

1) ProductName:       id, description
2) ProductFormat:     id, description, width, height
3) ProductThickness:  id, description

Ahora, formo un producto como combinacion de 3 caracteristicas existentes:

4) Product:           id, ProductName id, ProductFormat id,
ProductThickness id,
                          usages
----------------------------------------------------------------------------------

Como lo pense, la tabla 4 (model Product) parece una join table, pero en 
realidad es un model:
necesito guardar en la asociacion un string describiendo los posibles usos del 
producto.

El codigo ruby seria algo asi:

ProductName < ActiveRecord::Base
  has_many :product_thicknesses, :trough => :products
  has_many :product_formats, :trough => :products
  #has_many :product_names, :trough => :products
end

ProductFormat < ActiveRecord::Base
  has_many :product_thicknesses, :trough => :products
  #has_many :product_formats, :trough => :products
  has_many :product_names, :trough => :products
end

ProductThickness < ActiveRecord::Base
  #has_many :product_thicknesses, :trough => :products
  has_many :product_formats, :trough => :products
  has_many :product_names, :trough => :products
end

Product < ActiveRecord::Base
  belongs_to :product_thicknesses
  belongs_to :product_formats
  belongs_to :product_names
end

Les parece correcto? Se les ocurre una mejor forma de modelarlo?
La duda me surgio a partir de que quise implementar controladores REST para los 
productos.

Por ejemplo, pense en identificar los productos con url's como las siguientes:

product_name/#id/product_format/#id/product_thicness/#id

Esto estaria bien, excepto que no todas las combinaciones de productos
son posibles, solo las que se encuentran presentes en el 
model "Product". A la vez, pienso que estaria mal
identificar inequivocamente a un producto como la combinacion
de tres caracteristicas posibles si, justamente, a la combinacion
de estas tres caracteristicas se le ha asignado un id
(en la tabla "Product")....

Se les ocurre algo?

Muchas Gracias!

                
---------------------------------
 Preguntá. Respondé. Descubrí.
 Todo lo que querías saber, y lo que ni imaginabas,
 está en Yahoo! Respuestas (Beta).
 Probalo ya! 
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a