Rails 4 ha introducido una advertencia de obsolescencia al usar: uniq => true con has_many: through. Por ejemplo:
has_many :donors, :through => :donations, :uniq => true
Produce la siguiente advertencia:
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'
¿Cuál es la forma correcta de reescribir la declaración has_many anterior?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Ryan Crispin Heneise
fuente
fuente
distinct
lugar deuniq
. Consulte esta respuesta para obtener más detalles.Además de la respuesta de Dylans, si está extendiendo la asociación con un módulo, asegúrese de encadenarlo en el bloque de alcance (en lugar de especificarlo por separado), así:
Tal vez sea solo yo, pero parece muy poco intuitivo usar un bloque de alcance para extender un proxy de asociación.
fuente