समस्या तय ... पता चला था एक सक्रिय रिकॉर्ड विधि है कि मिल गया लिखा से अधिक है, अब सब कुछ उम्मीद के रूप में काम करता हैकैसे आप Mongoid में संबंधों पर आधारित chainable स्कोप की स्थापना
मैं स्थापित करने के लिए कोशिश कर रहा हूँ कर स्कोप तो मैं
class Competitor < Competitor
belongs_to :type
has_and_belongs_to_many :events
scope :at_event, ->(event) {where(:event_ids.in => event.competitor_ids)}
scope :of_type, ->(type) where(:type_id => type.id)
end
की तरह एक फोन है कि
Competitor.of_type(type).at_event(event)
कि प्रकार है कि घटना मेरे मॉडल में भाग लिया के सभी प्रतियोगियों वापस आ जाएगी तरह लग रहा है कुछ लग रहा है कर सकते हैं
निम्नलिखित काम करता है (mongoid मापदंड वापसी)
Competitor.of_type(type)
Competitor.at_event(event)
लेकिन जब मैं उन्हें श्रृंखला, यह कुछ है कि इस तरह दिखता है बाहर प्रिंट:
#<Competitor:0x00000109e2b210>
#<Competitor:0x00000109e2ab08>
-------=-=------------------------------------
=> #<Mongoid::Criteria
selector: {},
options: {},
class: Competitor,
embedded: false>
प्रतियोगी से प्रत्येक के लिए एक प्रतियोगी प्रवेश नहीं है। of_type (प्रकार) (पहला जंजीर मानदंड) और यदि मैं चलाता हूं। क्वेरी पर गणना, मुझे डेटाबेस में प्रतिस्पर्धा करने वालों की कुल संख्या मिलती है।
स्कोप्स के लिए मोंगोइड दस्तावेज़ीकरण के शीर्ष पर, यह कहता है कि सभी स्कोप चेनेबल हैं और साथ ही संघों पर भी लागू किए जा सकते हैं, बाद में संबंध अनुभाग में चर्चा की जा रही है। दुर्भाग्य से मुझे एक संबंध उपधारा नहीं मिला, मुझे मुख्य संबंध खंड में दायरे का एक भी संदर्भ नहीं मिला।
मैं परिणाम मैं चाहता था वापस जाने के लिए निम्नलिखित प्राप्त करने में सक्षम था:
where(:id.in => event.competitor_ids).where(:type_id => type.id)
लेकिन अगर क्वेरी के किसी भी हिस्से में एक अलग विधि या गुंजाइश में विभाजित है यह विफल रहता है और परिणाम मैं ऊपर से पता चला है प्रदान करता है।
कृपया, अपने स्वयं के प्रश्न पूछें और इसे हल के रूप में चिह्नित करें। –