Rails 4 hat eine Verfallswarnung eingeführt, wenn Folgendes verwendet wird: uniq => true mit has_many: through. Beispielsweise:
has_many :donors, :through => :donations, :uniq => true
Gibt folgende Warnung aus:
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'
Was ist der richtige Weg, um die obige has_many-Deklaration neu zu schreiben?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Ryan Crispin Heneise
quelle
quelle
distinct
anstelle von verwendenuniq
. Siehe diese Antwort für weitere Details.Wenn Sie die Zuordnung zu einem Modul erweitern, stellen Sie zusätzlich zur Antwort von Dylans sicher, dass Sie sie im Bereichsblock verketten (anstatt sie separat anzugeben).
Vielleicht bin ich es nur, aber es scheint sehr unintuitiv zu sein, einen Bereichsblock zu verwenden, um einen Assoziations-Proxy zu erweitern.
quelle