Rails 4 не соблюдает default_scope при использовании ассоциации has_one

У меня есть класс модели, который имеет область видимости по умолчанию, что-то вроде этого

class Avatar
  self.table_name = 'attachments'
  belongs_to :user
  default_scope -> { where(type: 'avatar') }
end

class User
  has_one :avatar
end

Я ожидал User.first.avatar вернуть первое вложение, созданное пользователем, где типом является аватар. Вместо этого я получаю первое вложение пользователя (независимо от его типа).

Я должен указать тип вручную, чтобы заставить его работать:

has_one :avatar, -> { where(type: 'avatar') }

Почему ассоциации не уважают default_scope? Я должен добавить, что Avatar.all возвращает ожидаемые результаты (только если тип 'аватар').

0 ответов

Другие вопросы по тегам