[Ruby-on-rails] Has_many का उपयोग करते समय बहिष्करण चेतावनी: के माध्यम से: रेल 4 में uniq


Answers

डायलन के जवाब के अलावा, यदि आप मॉड्यूल के साथ एसोसिएशन को विस्तारित करते हैं, तो सुनिश्चित करें कि आप इसे स्कोप ब्लॉक में ले जाएं (जैसा कि इसे अलग से निर्दिष्ट करने के विपरीत), जैसे:

has_many :donors,
  -> { extending(DonorExtensions).order(:name).uniq },
  through: :donations

शायद यह सिर्फ मुझे है लेकिन यह एक एसोसिएशन प्रॉक्सी का विस्तार करने के लिए एक स्कोप ब्लॉक का उपयोग करने के लिए बहुत ही अनजान लगता है।

Question

रेल 4 ने उपयोग करते समय एक बहिष्करण चेतावनी पेश की है: uniq => true_ hasany के साथ सच है: के माध्यम से। उदाहरण के लिए:

has_many :donors, :through => :donations, :uniq => true

निम्नलिखित चेतावनी उत्पन्न करता है:

DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following:

    has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'

should be rewritten as the following:

    has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

उपरोक्त has_many घोषणा को फिर से लिखने का सही तरीका क्या है?