आप इस तरह की क्वेरी लिखने के संभावित तरीकों की समीक्षा करना चाह सकते हैं इस जवाब में कई पंक्तियों में शर्तें लागू करने के लिए एक में शामिल हों . 1B, उप-क्वेरी दृष्टिकोण का उपयोग करके रेल में अपनी क्वेरी को लागू करने का एक संभावित विकल्प यहां दिया गया है...
PostTag
. में किसी क्वेरी को परिभाषित करें मॉडल जो Post
को पकड़ लेगा किसी दिए गए Tag
. के लिए आईडी मान नाम:
# PostTag.rb
def self.post_ids_for_tag(tag_name)
joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end
Post
में क्वेरी को परिभाषित करें मॉडल जो Post
को पकड़ लेगा किसी दिए गए Tag
. के लिए रिकॉर्ड नाम, उप-क्वेरी संरचना का उपयोग करते हुए:
# Post.rb
def self.for_tag(tag_name)
where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end
फिर आप इस तरह की क्वेरी का उपयोग कर सकते हैं:
Post.for_tag("basil").for_tag("tomato")