我有一個模型的優惠,另外historical_offers,一個報價的has_many historical_offers。ActiveRecord的:添加條件ON子句包括
現在我想急於負載一個給定的一天historical_offers一組的優惠,如果它存在。爲此,我認爲我需要將日期傳遞給ON子句,而不是WHERE子句,這樣我就可以獲得所有優惠,也可以在給定日期沒有historical_offer的情況下。
隨着 Offer.where(several_complex_conditions).includes(:historical_offers)。凡( 「historical_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定義特定DAT e,但是我怎麼會通過一個日期呢?
我也可以寫加入mysqlf這樣的:
Offer.where(several_complex_conditions)
.joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])
但我怎麼可以連接這件事,以便預先加載完成?
A [相關問題](http://stackoverflow.com/questions/15691558/refining-the-inner-join-when-using-includes -in-activerecord/17737833#17737833)獲得了更多的關注,但沒有給出你正在尋找的東西。 –