У меня есть предложения модели и еще одно history_offers, одно предложение has_many history_offers.
Теперь я хотел бы с нетерпением загрузить history_offers одного дня для набора предложений, если он существует. Для этого я думаю, что мне нужно передать этот день в предложение ON, а не в предложение WHERE, чтобы получить все предложения, а также когда в течение данного дня нет события history_offer.
С Offer.where(несколько_complex_conditions).includes(: history_offers).where( "history_offers.day =?", Date.today)
Я бы получил
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id
WHERE day = '2012-11-09' AND ...
Но я хочу иметь условие в предложении ON, а не в предложении WHERE:
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id AND day = '2012-11-09'
WHERE ...
Я предполагаю, что я могу изменить определение has_many с условием лямбда на определенную дату, но как бы я прошел через дату?
В качестве альтернативы я мог бы написать объединения mysqlf следующим образом:
Offer.where(several_complex_conditions)
.joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])
Но как я могу подключить это так, чтобы выполнить загрузку?