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
不尊重默认范围。你确定吗?我经常使用它:它可能是某种宝石造成的。