Rails: Search method breaks PostgreSQL, alternatives? -


मेरे पास मेरे ऐप में निम्नलिखित विधि है:

  def self.tagged_with (string) सरणी = string.split (',')। Map {| s | | S.lstrip} joins (: tags) .where ('tags.name' = & gt; सरणी) .group ('photos.id') समाप्ति   

यह फ़ोटो खोज रहा है, जिनके पास टैग्स के माध्यम से कई टैग।

इस पद्धति से टैग्स की अल्पविराम से अलग सूची ली जाती है और कोई भी फ़ोटो देता है, जो दिए गए नामों के साथ टैग से संबंधित हैं।

समस्या यह है कि यह PostgreSQL को निम्नलिखित त्रुटि संदेश: <पूर्व> ActionView :: Template :: त्रुटि (PGError: त्रुटि: कॉलम "photos.custom_title" GROUP BY खंड में प्रकट होना चाहिए या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए: SELECT "photos "।" से "।" फोटो "इनर जॉइन" टैगगिंग्स "ऑन" फ़ोटो "।" Id "=" टैगगिंग "।" फोटो_आईड "इनर जॉइन" टैग "ऑन" टैग "।" Id "=" टैगिंग "।" Tag_id "WHERE "टैग"। "नाम" में ('गांव') और ("फ़ोटो"। Collection_id = 1) ग्रुप द्वारा photos.id LIMIT 20 OFSESET 0):

एक और कुछ इसी तरह के प्रश्न में एक उत्तरदाता ने सुझाव दिया कि जब भी .group () का उपयोग करना आवश्यक है, तो तालिका में सभी स्तंभों को शामिल करना आवश्यक था। यह मेरे लिए पागल लगता है - यह क्या है .group का बिंदु है यदि आप केवल अपने मॉडल में सभी फ़ील्ड लिखकर इसका उपयोग कर सकते हैं यह भंगुर है, और सिर्फ एक बुरा विचार है।

क्या कोई भी इस विधि को पोस्टग्रेएसक्यूएल के साथ काम करने का एक वैकल्पिक तरीका सुझा सकता है?

एक नज़र डालें

सुझावों में से एक ("विकल्प 2") अपने सम्मिलित होने से पहले को चुनें ("विशिष्ट फ़ोटो। *") चुनें। मैंने ऐसा कभी नहीं किया है लेकिन यह एक कोशिश के लायक लगता है; प्रत्येक चयनित क्षेत्र को एक समग्र कार्य में डालने से निश्चित रूप से बेहतर है।

Comments