Hola gente,

Tengo un problema que tiene que ver con el diseño de la base de datos más
que con Rails, pero como vengo algo oxidado con la práctica de programar
quisiera que me aconsejen cual sería la mejor alternativa para tomar un
impulso y seguir con el desarrollo (ya que estoy bastante estancado).
Resulta que es un sistema de ventas de productos. Tengo un maestro de
productos, una tabla de órdenes y una tabla que indica cuales productos se
compraron para tales órdenes.

El modelo que hice es el que sigue:



Las relaciones en Rails son las siguientes:

 

class Entry < ActiveRecord::Base

  belongs_to :order

  belongs_to :product  

end

 

class Order < ActiveRecord::Base

  has_many :entries

  has_many :products, :through => :entries, :source => :product  

end

 

class Product < ActiveRecord::Base

  has_many :entries

  has_many :orders, :through => :entries, :source => :order

end

 

Las preguntas que tengo son las siguientes:

1.       La tabla nexo entre la relación muchos a muchos la quise enriquecer
agregando una columna de ítems_sold, para que cuando se agregue un producto
nuevo automáticamente este campo se actualice. Por ejemplo si ejecutara
entry << producto no quisiera que me agregue un registro nuevo a entries sin
antes verificar si el mismo producto fue agregado para la misma orden y
aumentar en caso que si lo fuera. Ahora, qué código tendré que escribir? Es
un callback? Me estoy complicando demasiado? 

2.       La misma tabla del punto anterior la llame entries, como entradas a
una factura de venta. Cada registro sería un detalle de cual y cuantos ítems
de cada producto se vendieron… pero no se qué tan apropiado es el nombre que
le puse.

3.       Se puede prescindir de una clave primaria siempre y cuando la
relación fuera has_and_belongs_to_many, no es cierto? En cuyo caso debería
agregar una clave primaria… El tema es que me pareció ilógico agregar un
entry_id que puede aumentar exponencialmente y no tiene mucho sentido como
identificador.

 

Eso es todo pero creo que hay mucho espacio para la mejora fuera de estas
observaciones.

 

Les pido ayuda porque evidentemente me estoy ahogando en un vaso de agua.

Gracias.

<<image003.png>>

_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a