从概念上讲,我有 2 个模型,一个具有默认范围
class Model
default_scope where: "is_acitve = 1"
end
class SpecialUser
has_many :model
## 1
def model
Model.unscoped { super }
end
end
我试图有几个选择的地方覆盖模型的默认范围 - 模型的许多其他用户存在,他们都应该只看到活动模型的。只有少数特殊情况可以访问不活动的情况。
使用方法#1,我可以处理这种情况
s = SpecialUser.find_by_id x
s.model # <-- works for even is_active =0 cases.
但是,如果我尝试如下(为了性能):
s = SpecialUser.includes(:model).where("id = 5")
默认范围被注入到查询中。
即使使用包含任何方法来避免默认范围?