Rails 4 telah memperkenalkan peringatan penghentian saat menggunakan: uniq => true dengan has_many: through. Sebagai contoh:
has_many :donors, :through => :donations, :uniq => true
Menghasilkan peringatan berikut:
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'
Apa cara yang benar untuk menulis ulang deklarasi has_many di atas?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Ryan Crispin Heneise
sumber
sumber
distinct
sebagai penggantiuniq
. Lihat jawaban ini untuk lebih jelasnya.Selain jawaban Dylans, jika Anda kebetulan memperluas pengaitan dengan modul, pastikan Anda merantai itu di blok cakupan (bukan menentukannya secara terpisah), seperti:
Mungkin hanya saya, tetapi tampaknya sangat tidak intuitif menggunakan blok lingkup untuk memperluas proxy asosiasi.
sumber