ruby on rails - Custom ActiveRecord finder invoking named scopes? -


मेरे पास नीचे परिभाषित कस्टम खोजक है:

  वर्ग कंटेनरगेट इन & lt; & lt; ActiveRecord :: बेस ... def self.search (text) परिणाम = यदि पाठ text.split ('') .inject (self) do | परिणाम, मानदंड | मामला मानदंड जब / ^ [0-9] {4} - [0-9] {2} - [0-9] {2} $ / परिणाम। खोज_बाइट_डेट (मापदंड। टू_डेट) और परिणाम। Search_by_text (मानदंड) समाप्ति अंत दूसरा स्व अंत अंत ... अंत  

जहां search_by_date और search_by_text का नाम स्कोप है, और उत्सुक एक उत्सुक-लोडिंग नामित स्कोप है:

  name_scope : उत्सुक ,: शामिल = & gt; [{: कंटेनर_इनवेंटरी = & gt; {: कंटेनर = & gt; एसएमओ एक एचएमटी (के माध्यम से है):  
    वर्ग कंटेनर डीपोट & lt; & lt; ActiveRecord :: बेस है has_many: container_inventories has_many: container_gate_ins ,: through = & gt; : Container_inventories समाप्त करें  

समस्या यह है कि कंटेनर डीपोट से एसोसिएशन घोंसले के शिकार के माध्यम से खोजकर्ता को लाया जाता है, यह एक ActiveRecord :: स्टेटमेंट :: अमान्य के साथ विफल रहता है, यह कह रहा है कि मेज से अधिक निर्दिष्ट किया गया है एक बार।

<पूर्व> कंटेनरडापोट.पश्चर कंटैनेर_गेट_इन.इगर.सेचर (टेक्स्ट) = & gt; ActiveRecord :: StatementInvalid: PGError: त्रुटि: तालिका नाम "container_inventories" एक से अधिक बार निर्दिष्ट किया गया है

मैं एक सम्बद्ध विस्तार के रूप में पूरे कस्टम खोजक की प्रतिलिपि करके इसे सही कर सकता हूं:

  वर्ग कंटेनरडापोट & lt; & lt; ActiveRecord :: बेस ... has_many: container_gate_ins ,: through = & gt; : Container_inventories def खोज (पाठ) ... कंटेनर गेट से कस्टम खोजक कोड ... अंत अंत ... अंत  

हालांकि यह बहुत शुष्क नहीं है और एक बहुत अनावश्यक और संभावित समस्याग्रस्त परिचय अतिरिक्त खोज तर्क को समायोजित करने के लिए समय-समय पर कस्टम खोजक को बदलना होगा।

यह कैसे बेहतर किया जा सकता है पर कोई विचार?

< Div class = "post-text" itemprop = "text">

आप लैम्ब्डा के साथ name_scope का उपयोग कर सकते हैं, जिससे आपको स्कोपिंग विधि के लिए पैरामीटर में पास कर सकते हैं:

  name_scope: उत्सुक, लैम्ब्डा {| पाठ | {: Conditions = & gt; {: name = & gt; text},: इसमें शामिल है & gt; [{: कंटेनर_इनवेंटरी = & gt; {: कंटेनर = & gt; [: Size_type,: ग्रेड]}},: कंपनी,: ट्रक,: hauler]}}  

इसे केवल एक नामित स्कोप के साथ शामिल करने और फ़िल्टर करने की अनुमति देनी चाहिए।


Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -