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

मैं रेल पर रूबी में एक क्वेरी कैसे बना सकता हूं जो केवल एक has_many संबंध के अधिकतम में शामिल होता है और उस संबंध पर एक चुनिंदा फ़िल्टर शामिल करता है?

मैं पंक्तियों की एक बड़ी मात्रा के साथ एक आवेदन में एक ही मुद्दे के साथ काफी संघर्ष कर रहा था और पार्श्व जुड़ने और उपश्रेणियों जैसे विभिन्न उपन्यास समाधानों की कोशिश करने के बाद सबसे अच्छा प्रदर्शन करने वाला और सबसे सरल समाधान केवल तालिका में एक विदेशी कुंजी जोड़ने के लिए था जो इंगित करता है नवीनतम पंक्ति में और एक एसोसिएशन कॉलबैक (या एक db ट्रिगर ) विदेशी कुंजी सेट करने के लिए।

class AddLatestEmploymentToEmployees < ActiveRecord::Migration[6.0]
  def change
    add_reference :employees, :latest_employment, foreign_key: { to_table: :employments }
  end
end

class Employee < ActiveRecord::Base
  has_many :employments, after_add: :set_latest_employment
  belongs_to :latest_employment, 
    class_name: 'Employment',
    optional: true

  private
  def set_latest_employment(employment)
    update_column(:latest_employment_id, employment.id)
  end 
end
Employee.joins(:latest_employment)
        .where(employments: { status: :active })

यह वास्तव में चमकता है यदि संबंधित रिकॉर्ड की मात्रा बहुत बड़ी है जैसे कि यह मेरे मामले में था क्योंकि आप स्मृति समस्याओं के बिना नवीनतम रिकॉर्ड लोड कर सकते हैं जो तब होता है जब आप संपूर्ण has_many लोड करते हैं संघ।



  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. क्या मेरे प्रोजेक्ट फ़ोल्डर के ठीक बगल में मेरी पोस्टग्रेज निर्देशिका होनी चाहिए? यदि हां, तो कैसे?

  3. Entityframework 6 से DTO बनाने के लिए T4 टेम्प्लेट कैसे लिखें?

  4. psycopg2 के साथ बाइनरी कॉपी टेबल का उपयोग करें

  5. PHP के माध्यम से Postgres से कनेक्ट करने में असमर्थ लेकिन कमांड लाइन और PgAdmin से अलग मशीन पर कनेक्ट कर सकते हैं