В Rails 4 появилось предупреждение об устаревании при использовании: uniq => true с has_many: through. Например:
has_many :donors, :through => :donations, :uniq => true
Выдает следующее предупреждение:
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'
Как правильно переписать указанное выше объявление has_many?
ruby-on-rails
activerecord
rails-activerecord
ruby-on-rails-4
Райан Криспин Хениз
источник
источник
distinct
вместоuniq
. См. Этот ответ для получения более подробной информации.В дополнение к ответу Диланса, если вы расширяете ассоциацию с модулем, убедитесь, что вы связали его в блоке области (а не указывать его отдельно), например:
Может быть, это только я, но мне кажется очень неинтуитивным использовать блок области видимости для расширения прокси-сервера ассоциации.
источник