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