आपके प्रश्न में मिली SQL क्वेरी को फिर से लिखने के लिए, मुझे लगता है कि यह निम्न जैसा होना चाहिए (हालाँकि मुझे आपके मॉडल संबंधों को पूरी तरह से देखने में कठिनाई हो रही है, इसलिए यह थोड़ा अनुमान है):
RagaContextApplicantsSong.
joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
group('raga_contest_rounds.contest_cat_id')
...जैसे कि joins
मेथड दोनों जॉइन के साथ-साथ WHERE
. का भी ख्याल रखती है खंड, उसके बाद अंत में group
कॉल करें।
संदर्भ के लिए और अधिक:
अगर आप एक ही मॉडल से कई एसोसिएशनों में शामिल हो रहे हैं आप उन्हें आसानी से सूचीबद्ध कर सकते हैं :
Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment
अगर आप नेस्टेड टेबल में शामिल हो रहे हैं तो आप उन्हें हैश के रूप में सूचीबद्ध कर सकते हैं:
Post.joins(:comments => :guest)
Returns all comments made by a guest
नेस्टेड एसोसिएशन, एकाधिक स्तर:
Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest
आप ActiveRecord क्वेरी इंटरफ़ेस कॉल को भी इस तरह से श्रृंखलाबद्ध कर सकते हैं:
Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)
यदि अन्य सभी विफल हो जाते हैं, तो आप हमेशा एक SQL फ़्रैगमेंट को सीधे इसमें पास कर सकते हैं joins
विधि
अपनी कार्यशील क्वेरी से कुछ और ARQI-केंद्रित करने के लिए एक कदम के रूप में
Client.joins('LEFT OUTER JOIN addresses ON addresses.client_id = clients.id')
=> SELECT clients.* FROM clients LEFT OUTER JOIN addresses ON addresses.client_id = clients.id