में ऑन क्लास में शर्त जोड़ना मेरे पास एक मॉडल ऑफ़र और अन्य ऐतिहासिक_ऑफर्स हैं, एक ऑफ़र में कई ऐतिहासिक_ऑफर्स हैं।ActiveRecord:
अब मैं एक दिन के ऐतिहासिक_ऑफर्स को ऑफ़र के सेट के लिए लोड करना चाहता हूं, यदि यह मौजूद है। इसके लिए, मुझे लगता है कि मुझे दिन को ऑन क्लॉज पर पास करने की ज़रूरत है, न कि WHERE क्लॉज, ताकि मुझे सभी ऑफ़र मिल जाए, जब भी दिन के लिए कोई ऐतिहासिक_फफर न हो। (: Historical_offers) .where ("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 ...
मिलेगा लेकिन मैं चाहता हूँ
Offer.where (several_complex_conditions) .includes साथकहां खंड में नहीं, पर खंड में हालत के लिए:
SELECT * FROM offers
LEFT OUTER JOIN historical_offers
ON offers.id = historical_offers.offer_id AND day = '2012-11-09'
WHERE ...
मुझे लगता है कि मैं एक विशिष्ट Dat के लिए एक लैम्ब्डा शर्त के साथ has_many परिभाषा बदल सकता है ई, लेकिन मैं एक तारीख में कैसे पास करूंगा?
वैकल्पिक रूप से मैं लिख सकता है इस तरह mysqlf मिलती है:
Offer.where(several_complex_conditions)
.joins(["historical_offers ON offers.id = historical_offers.offer_id AND day = ?", Date.today])
लेकिन कैसे मैं इस ऊपर हुक कर सकते हैं ताकि उत्सुक लोड हो रहा है किया जाता है?
एक [संबंधित प्रश्न] (http://stackoverflow.com/questions/15691558/refining-the-inner-join-when-using-includes -इन-एक्टिव्रेकॉर्ड/17737833 # 17737833) पर अधिक ध्यान दिया गया, लेकिन कोई भी बिल्कुल ठीक नहीं मिला जिसे आप ढूंढ रहे हैं। –