Ruby on rails Rails 4在使用has\u one关联时不遵守默认的\u范围

Ruby on rails Rails 4在使用has\u one关联时不遵守默认的\u范围,ruby-on-rails,associations,default-scope,Ruby On Rails,Associations,Default Scope,我有一个模型类,它有一个默认范围,类似这样 class Avatar self.table_name = 'attachments' belongs_to :user default_scope -> { where(type: 'avatar') } end class User has_one :avatar end 我希望User.first.avatar返回用户创建的第一个附件,其中类型为avatar。相反,我得到的是用户的第一个附件(无论类型如何) 我必须手动

我有一个模型类,它有一个默认范围,类似这样

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

class User
  has_one :avatar
end
我希望
User.first.avatar
返回用户创建的第一个附件,其中类型为avatar。相反,我得到的是用户的第一个附件(无论类型如何)

我必须手动指定类型才能使其工作:

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

为什么关联不尊重默认范围?我应该添加
Avatar。all
返回预期结果(仅在类型为“Avatar”的情况下)。

还有,
User。首先,如果我将其更改为has\u many关系,则Avatar
不尊重默认范围。你确定吗?我经常使用它:它可能是某种宝石造成的。