-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGuia.txt
65 lines (52 loc) · 2.58 KB
/
Guia.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Para modificar los tipos de datos que las tablas, visité el siguiente link:
https://tosbourn.com/rails-migrate-change-column-type/
Para crear los modelos hice lo siguiente:
rails g scaffold Product name:string price:float description:text
rails g scaffold Sell sell_date:date total:float
Para crear la relación entre los modelos creados arriba:
rails g scaffold Order price:float quantity:integer product:references sell:references
Para probar a insertar datos pueden hacer lo siguiente desde la consola de rails:
Se crean dos productos de prueba:
p1 = Product.create!(name: "Producto 1", price: 25.50, description: "Descripción producto 1")
p2 = Product.create!(name: "Producto 2", price: 25.50, description: "Descripción producto 2")
Se crea una venta:
s1 = Sell.create!(sell_date: Time.now, total: 50.00, products: [p1, p2])
Para poder ver los datos ingresados pueden hacer lo siguiente:
s1.products
s1.products.count
s1.orders
s1.orders.count
Para crear las páginas hice lo siguiente:
rails g controller Pages home menu event
Para poder tener la información en la base de datos local ejecutar:
rails db:setup
Para crear la relación entre order y sell:
rails g migration add_sell_reference_to_order sell:references
Probar estas consultas:
o = Order.last
o.sell
Sell.last.orders
Consultas para las ventas y órdenes:
Sell.first.products.sum(:price) -> Suma los precios de todos los productos en un venta
Sell.first.products.count -> Cuenta cuantos productos hay en una venta
Sell.last.orders -> Muestra las órdenes que hay en una venta
Métodos para las ventas:
Ingresar productos a una nueva orden:
1. Crear el producto. En nuestro caso los productos ya van a estar creados,
por lo que este paso nos lo saltamos:
egg = Product.create!(name: "huevo", price: 1.25, description: "huevo grande")
2. Se crea la orden:
sell = Sell.create!(sell_date: Time.now, total: 0.0)
3. Se ingresa a la orden el producto seleccionado:
sell.products << egg
4. Se actualiza la cantidad pedida de dicho producto
sell.orders.last.update_attributes(quantity: 1)
5. Se actualiza el total de la venta:
sell.update!(total: sell.total + (egg.price*sell.orders.last.quantity))
Editar cantidad con venta ya ingresada, y productos ya ingresados a la venta
1. Se actualiza la cantidad pedida de dicho producto
sell.orders.last.update_attributes(quantity: 1)
2. Se actualiza el total de la venta:
sell.update!(total: sell.total + (egg.price*sell.orders.last.quantity))
Ejemplos para many-to-many relationship:
http://www.xyzpub.com/en/ruby-on-rails/3.2/ar-many_to_many.html