ActiveRecord: Dodanie warunku do klauzuli ON dla włączeń

Mam model oferty i inne oferty historyczne, jedna oferta ma wiele ofert historycznych.

Chciałbym teraz załadować oferty historyczne jednego dnia dla zestawu ofert, jeśli istnieje. W tym celu myślę, że muszę przekazać dzień klauzuli ON, a nie klauzuli WHERE, aby uzyskać wszystkie oferty, także wtedy, gdy nie ma oferty historycznej na dany dzień.

With Offer.where (several_complex_conditions) .includes (: historical_offers) .where ("historical_offers.day =?", Date.today)

Dostałbym

SELECT * FROM offers 
LEFT OUTER JOIN historical_offers 
ON offers.id = historical_offers.offer_id 
WHERE day = '2012-11-09' AND ...

Ale chcę mieć warunek w klauzuli ON, a nie w klauzuli WHERE:

SELECT * FROM offers 
LEFT OUTER JOIN historical_offers 
ON offers.id = historical_offers.offer_id AND day = '2012-11-09' 
WHERE ...

Myślę, że mógłbym zmienić definicję has_many ze stanem lambda na konkretną datę, ale w jaki sposób mógłbym przekazać datę?

Alternatywnie mógłbym napisać złączenia mysqlf w następujący sposób:

Offer.where(several_complex_conditions)
  .joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])

Ale jak mogę to podłączyć, aby zrobić szybkie ładowanie?

questionAnswers(1)

yourAnswerToTheQuestion