我使用Bullet gem帮助我找到ActiveRecord查询的n + 1错误。我目前正在传递:
@user = User.includes(:routines => {:lifts => [:exercise,:infos]})。find(current_user.id)
对我而言,这意味着我正在加载当前用户,他的例程,那些例行程序的升降机,以及那些升降机的练习和信息(这些是设置)。
有人能够向我解释这个吗?
谢谢!
答案 0 :(得分:0)
你肯定是在正确的道路上。我强烈建议您通过http://guides.rubyonrails.org/
进行更新当您访问以下数据时,您的设置支持预加载:
routines = @user.routines
lifts = @user.routines.map(&:lifts)
您能描述一下您是如何尝试访问这些数据的吗?您似乎可能尝试通过以下方式访问例程:
lift.routine
您如何访问lift
?
您可能希望确保在指定关联时使用:inverse_of
。
Routine
有多少:lifts
?