Rails 4 a introduit un avertissement de dépréciation lors de l'utilisation de: uniq => true avec has_many: through. Par exemple:
has_many :donors, :through => :donations, :uniq => true
Renvoie l'avertissement suivant:
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'
Quelle est la bonne façon de réécrire la déclaration has_many ci-dessus?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Ryan Crispin Heneise
la source
la source
distinct
place deuniq
. Voir cette réponse pour plus de détails.En plus de la réponse de Dylans, si vous étendez l'association avec un module, assurez-vous de l'enchaîner dans le bloc de portée (au lieu de le spécifier séparément), comme ceci:
Peut-être que c'est juste moi, mais il semble très peu intuitif d'utiliser un bloc de portée pour étendre un proxy d'association.
la source