如何在 rails 模型中指定预先加载关联
How to specify eager loading of associations in rails model
class A < ActiveRecord::Base
has_many :Bs
has_many :Cs
...
end
我希望每当我对 A 进行查询时加载所有 B 和 C,比如 A.where(name: :abc)
,使用单个查询,而不是多次调用数据库。
我不想为我 运行 的每个查询指定 .includes
。如何在模型本身中指定预先加载?
我看了很多类似的问题并尝试这样做但它不起作用:
default_scope :include => [:Bs, :Cs]
default_scope { includes(:Bs, :Cs) }
应该做到。
据我所知,作用域将块作为参数而不是选项的散列。我刚刚在 rails 控制台中尝试过,似乎有效。
class A < ActiveRecord::Base
has_many :Bs
has_many :Cs
...
end
我希望每当我对 A 进行查询时加载所有 B 和 C,比如 A.where(name: :abc)
,使用单个查询,而不是多次调用数据库。
我不想为我 运行 的每个查询指定 .includes
。如何在模型本身中指定预先加载?
我看了很多类似的问题并尝试这样做但它不起作用:
default_scope :include => [:Bs, :Cs]
default_scope { includes(:Bs, :Cs) }
应该做到。
据我所知,作用域将块作为参数而不是选项的散列。我刚刚在 rails 控制台中尝试过,似乎有效。