概念的には、2 つのモデルがあり、1 つにはデフォルトのスコープがあります
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")
デフォルトのスコープがクエリに挿入されます。
includes を使用している場合でも、デフォルトのスコープを回避する方法はありますか?