¿Cómo modelaría compradores y vendedores en una aplicación de comercio electrónico Ruby on Rails?

Tanto los compradores como los vendedores tienen información personal / comercial asociada a ellos. Para los vendedores, es posible que desee verificarlos para incluir campos adicionales para eso.

Los vendedores tendrían una lista de bienes y / o servicios que están vendiendo que se asociarían con sus cuentas.

Cuando un comprador realiza una compra, debe almacenar información relacionada con esa compra, como la dirección de envío / facturación, la tasa de impuestos, la tasa de envío, etc. Como parte de la compra, también crearía una asociación con el bien y los servicios que se compraron.

Entonces sus modelos se verían así:

  • Vendedor
    • Nombre completo
    • Número de teléfono
    • dirección de correo electrónico
    • Dirección
    • Número comercial / fiscal
    • tiene_muchos productos_o_servicios
  • Productos o servicios
    • nombre del producto (o servicio)
    • precio (o costo de suscripción)
    • pertenece al vendedor
  • Comprador
    • Nombre completo
    • número de teléfono
    • dirección de correo electrónico
  • Orden de compra
    • pertenece al comprador
    • pertenece al vendedor
    • has_many line_items
    • tasa de impuesto
    • gastos de envío
    • total parcial
    • total
  • Elemento en linea
    • pertenece a productos o servicio
    • cantidad
    • costo

Algo así de todos modos. Las preguntas más importantes se refieren principalmente a las tasas impositivas, las tasas de envío y cómo almacenar la información del producto / servicio / comprador en el momento de la compra (he usado un blob JSON almacenado en un campo TEXTO en SQL, por ejemplo, también he usado en el modelo anterior donde una instancia de line_item almacenará el costo del producto al momento de la compra, configuro esto tan pronto como se agrega un artículo a un carrito de compras).

  Transacción de clase
   belong_to: seller,: class_name => "Usuario"
   belong_to: comprador,: class_name => "Usuario"
   has_many: transacción_items
   has_many: productos,: a través =>: elemento_transaccion
 fin 

La tabla de transacciones debería contener un vendedor_id y un comprador_id que se correlacionen con user_ids. Los elementos de transacción deben contener transacción_id, producto_id y una cantidad, o algo por el estilo.