2011-02-02 16 views
15

मैं यह जानता हूँ किया जा सकता है:रेल 3 ActiveRecord सशर्त शामिल है?

Article.where("published_at <= ?", Time.now).includes(:comments) 

लेकिन क्या होगा अगर मैं चाहता हूँ केवल टिप्पणियों पिछले एक महीने में तैनात करने के लिए?

क्या शामिल है ऑपरेटर परिस्थितियों की अनुमति देता है?

उत्तर

13
Article.includes(:comments).where("articles.published_at <= ? and comments.created_at >= ?", Time.now, Time.now - 1.month) 

संपादित करें:

Article.joins(:comments).where("articles.published_at <= ? and comments.created_at >= ?", Time.now, Time.now - 1.month) 
+0

वाह, मैं ऐसा नहीं जानती थी कि। बहुत बहुत धन्यवाद। – samvermette

+8

असल में, यह क्वेरी केवल उन लेखों को लौटाती है जिनके पास पिछले महीने में एक टिप्पणी पोस्ट की गई है। पिछले महीने में पोस्ट की गई प्रत्येक लेख की टिप्पणियों के साथ-साथ * सभी * लेख लौटाए गए हैं (यदि कोई है तो)। – samvermette

+0

शामिल होने के बजाय शामिल होने के बारे में क्या? (संपादित करें देखें) –

4

Rails4 में, यह होना चाहिए: Article.includes(:comments).where("articles.published_at <= ? and comments.created_at >= ?", Time.now, Time.now - 1.month).references(:comments)

Source

+0

ध्यान दें कि 'एसोसिएशन' के साथ काम शामिल है नाम 'संदर्भ' के लिए वास्तविक तालिका नाम की आवश्यकता है। –

+1

कि '.references() 'चाल बचाया गया है, ty ... – 7urkm3n

संबंधित मुद्दे