PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सॉर्ट करने योग्य यूयूआईडी और ओवरराइडिंग ActiveRecord::Base

सबसे पहले, first और last उतना आसान नहीं है जितना आपको लगता है कि वे हैं:आप पूरी तरह से limit . की उपेक्षा कर रहे हैं तर्क है कि ये दोनों विधियां समर्थन करती हैं।

दूसरा, scope प्रश्नों को वापस करने के उद्देश्य से क्लास विधियों को जोड़ने का एक शानदार तरीका है। आपके कार्यक्षेत्र scope का दुरुपयोग कर रहे हैं क्योंकि वे प्रश्नों के बजाय एकल मॉडल उदाहरण लौटाते हैं। आप scope का उपयोग नहीं करना चाहते बिल्कुल भी, आप बस first . को बदलने का प्रयास कर रहे हैं और last वर्ग विधियों तो आप उन्हें ओवरराइड क्यों नहीं करते? हालांकि आपको उन्हें ठीक से ओवरराइड करने की आवश्यकता होगी और इसके लिए रेल स्रोत को पढ़ने और समझने की आवश्यकता होगी ताकि आप ठीक से नकल कर सकें कि find_nth_with_limit करता है। आप second को ओवरराइड करना चाहेंगे , third , ... और बाकी मूर्खतापूर्ण तरीके जब आप इसमें हों।

यदि आप first को बदलने के बारे में सही नहीं समझते हैं और last (एक अच्छी बात आईएमओ), तो आप वांछित चीजों को ऑर्डर करने के लिए एक डिफ़ॉल्ट दायरा जोड़ सकते हैं:

default_scope -> { order(:created_at) }

बेशक, डिफ़ॉल्ट स्कोप समस्याओं के अपने सेट के साथ आते हैं और चीजों को ORDER BY में इस तरह से छिपाते हैं, शायद आपको reorder जब भी आप वास्तव में ORDER BY निर्दिष्ट करना चाहते हैं; याद रखें कि order . के लिए कई कॉल नई ऑर्डरिंग शर्तें जोड़ें, वे पहले से मौजूद शर्तों को प्रतिस्थापित नहीं करती हैं।

वैकल्पिक रूप से, यदि आप Rails6+ का उपयोग कर रहे हैं, तो आप Markus's implicit_order_column का उपयोग कर सकते हैं। समाधान उन सभी समस्याओं से बचने के लिए जो डिफ़ॉल्ट कार्यक्षेत्र पैदा कर सकते हैं।

मुझे लगता है कि आप यह सब गलत कर रहे हैं। जब भी मुझे M.first दिखाई देता है मुझे लगता है कि कुछ भूल गया है। id . के आधार पर चीज़ें ऑर्डर करना काफी बेकार है इसलिए आपको हमेशा first . जैसी विधियों का उपयोग करने से पहले अपने इच्छित क्रम को मैन्युअल रूप से निर्दिष्ट करें और last



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डायनालोडर में डीबीडी ::पीजी स्थापित करना क्यों विफल हो जाता है?

  2. पिछले 24 घंटों में डेटा परिवर्तन वाली सभी तालिकाओं को कैसे सूचीबद्ध करें?

  3. PostgreSQL क्वेरी सीमा 1 के साथ बहुत धीमी है

  4. गैर-अद्वितीय कॉलम पर एक अद्वितीय अनुक्रमणिका बनाएं

  5. फैले हुए जंगल ढूँढना (रिकर्सिव के साथ, PostgreSQL 9.5)