Ojala alguien pueda explicarme lo siguiente.
after_create :actualiza_co
after_save :actualiza_co
after_destroy :actualiza_co
private
def actualiza_co
co = self.compra_orden
co.detalles = co.compra_orden_detalles.count('*')
co.pendientes = co.compra_orden_detalles.sum('cantidad - recibido')
co.save
end
En el test me dice que detalles no se actualiza y en log me muestra esto:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[1m [36m (0.4ms) [0m [1mSELECT COUNT(*) FROM `compra_orden_detalles` WHERE `compra_orden_detalles`.`empresa_id` = 663133202 AND `compra_orden_detalles`.`compra_orden_id` = NULL [0m
[1m [35m (0.4ms) [0m SELECT SUM(cantidad - recibido) FROM `compra_orden_detalles` WHERE `compra_orden_detalles`.`empresa_id` = 663133202 AND `compra_orden_detalles`.`compra_orden_id` = NULL
[1m [36mCompraOrden Exists (0.5ms) [0m [1mSELECT 1 AS one FROM `compra_ordenes` WHERE (`compra_ordenes`.`folio` = BINARY 111 AND `compra_ordenes`.`id` != 1254326) LIMIT 1 [0m
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Si se fijan compra_orden_id = NULL
Si cambio
def actualiza_co()
co = self.compra_orden
co.detalles = CompraOrdenDetalle.where(['compra_orden_id = ?',
co.id]).count('*')
co.pendientes = CompraOrdenDetalle.where(['compra_orden_id = ?',
co.id]).sum('cantidad - recibido')
co.save
end
EL log queda así y funciona como se espera
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[1m [36m (0.5ms) [0m [1mSELECT COUNT(*) FROM `compra_orden_detalles` WHERE `compra_orden_detalles`.`empresa_id` = 663133202 AND (compra_orden_id = 1254329) [0m
[1m [35m (0.4ms) [0m SELECT SUM(cantidad - recibido) FROM `compra_orden_detalles` WHERE `compra_orden_detalles`.`empresa_id` = 663133202 AND (compra_orden_id = 1254329)
[1m [36mCompraOrden Exists (0.5ms) [0m [1mSELECT 1 AS one FROM `compra_ordenes` WHERE (`compra_ordenes`.`folio` = BINARY 111 AND `compra_ordenes`.`id` != 1254329) LIMIT 1 [0m
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Lo único que cambie fue actualiza_co
Alguien sabe la razón de la diferencia, por que no funciona como se espera en la primera versión?.
Gracias.
--