ActiveRecord: Adicionando condição à cláusula ON para includes
Eu tenho uma oferta de modelos e outro histórico_offers, uma oferta has_many histórico_offers.
Agora gostaria de carregar ansiosamente o histórico_offers de um determinado dia para um conjunto de ofertas, se existir. Para isso, eu acho que preciso passar o dia para a cláusula ON, não a cláusula WHERE, para que eu receba todas as ofertas, mesmo quando não há histórico_offer para o dia determinado.
Com Offer.where (several_complex_conditions) .inclui (: historic_offers) .where ("historical_offers.day =?", Date.today)
eu pegaria
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id
WHERE day = '2012-11-09' AND ...
Mas eu quero ter a condição na cláusula ON, não na cláusula WHERE:
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id AND day = '2012-11-09'
WHERE ...
Eu acho que eu poderia alterar a definição has_many com uma condição lambda para uma data específica, mas como eu passaria em uma data então?
Alternativamente eu poderia escrever o joins mysqlf assim:
Offer.where(several_complex_conditions)
.joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])
Mas como posso ligar isso para que seja feito um carregamento ávido?