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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta