O Rails 4 introduziu um aviso de depreciação ao usar: uniq => true com has_many: through. Por exemplo:
has_many :donors, :through => :donations, :uniq => true
Rende o seguinte aviso:
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'
Qual é a maneira correta de reescrever a declaração has_many acima?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Ryan Crispin Heneise
fonte
fonte
distinct
vez deuniq
. Veja esta resposta para mais detalhes.Além da resposta de Dylans, se você estiver estendendo a associação com um módulo, certifique-se de encadear no bloco de escopo (em vez de especificá-lo separadamente), assim:
Talvez seja só eu, mas parece muito pouco intuitivo usar um bloco de escopo para estender um proxy de associação.
fonte