【发布时间】:2014-10-26 04:24:12
【问题描述】:
我有一组 ActiveRecord 模型,我正在预加载它们以避免 N+1 问题。为了帮助这个过程,我希望能够在我拥有(概念上)如下所示的块的地方进行一些手动测试:
# Prepare some data
data = Foo.includes(:bar, {baz: :quux}).find(27)
ActiveRecord.raise_error_if_any_queries_occur
perform_some_work_with_data(data)
ActiveRecord.back_to_normal
这似乎应该有办法做到这一点,但我没有任何运气。有其他人这样做过吗?
【问题讨论】:
-
如果你想推迟查询,你为什么要马上做
.find(27)? -
@lurker -- 这是事先发生的。我不想推迟查询,我想提前完成,然后在我正在工作的部分中,我想避免隐式查询。
标签: ruby-on-rails ruby activerecord