ActiveRecord: Agregar condición a la cláusula ON para incluye
Tengo una oferta de modelo y otra oferta histórica, una oferta tiene muchas ofertas históricas.
Ahora me gustaría cargar las ofertas históricas de un día para un conjunto de ofertas, si existe. Para esto, creo que necesito pasar el día a la cláusula ON, no a la cláusula WHERE, para que reciba todas las ofertas, también cuando no hay una oferta histórica para el día en cuestión.
Con Offer.where (varias_comunicaciones_completas) .incluye (: historical_offers) .where ("historical_offers.day =?", Date.today)
Yo obtendría
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id
WHERE day = '2012-11-09' AND ...
Pero quiero tener la condición en la cláusula ON, no en la cláusula WHERE:
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id AND day = '2012-11-09'
WHERE ...
Supongo que podría alterar la definición de has_many con una condición lambda para una fecha específica, pero ¿cómo pasaría una fecha entonces?
Alternativamente podría escribir las uniones mysqlf así:
Offer.where(several_complex_conditions)
.joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])
Pero, ¿cómo puedo conectar esto para que se realice una carga impaciente?