मेरे पास एक पोस्टग्रेएसक्यूएल 9.6 डेटाबेस के साथ एक रेल 5 अनुप्रयोग है।क्वेरी यदि सरणी कॉलम में एक या अधिक मान हैं
आवेदन है Report
मॉडल, एक department_ids
सरणी क्षेत्र है, जो के रूप में schema.rb
में परिभाषित किया गया है के साथ:
t.integer "department_ids", default: [], array: true
मैं एक प्रश्न जो रिपोर्ट पंक्तियों जहां department_ids
स्तंभ एक या एक से अधिक शामिल रिटर्न लिखने की ज़रूरत विभाग_आईड्स का दिया गया सेट।
मेरे वर्तमान वैकल्पिक हल के साथ रूबी में यह करने के लिए है:
department_ids = [2, 5]
reports = Report.all.select do |report|
(report.department_ids & department_ids).any?
end
हालांकि, select
का उपयोग कर ActiveRecord::Relation
के बजाय एक Array
लौटने का नकारात्मक पक्ष यह है, जिसका अर्थ है मैं फ़िल्टर किए गए परिणाम ActiveRecord::Relation
वस्तुओं में वापस हाइड्रेट करने की जरूरत है ।
Report.where(id: reports.map(&:id))
मैं उस चरण से बचना चाहता हूं, और इसे एक ही प्रश्न में संभालना चाहता हूं।
मैं सक्रिय रिकॉर्ड के साथ इस तरह की क्वेरी कैसे लिख सकता हूं?
क्यों आप इस तरह के क्षेत्र के साथ चाहते है? हो सकता है कि आपको विभाग में report_id को परिभाषित करने की ज़रूरत है या कई लोगों को एसोसिएशन बनाना है? – AntonTkachov