我的代码中有一行代码如下所示......
injury.player_extract.player
我从一个名为bullet的gem收到通知,检测到有n + 1个查询。现在有一个从伤害到球员提取,然后是球员提取到球员的关联 - 我将在下面概述。我已经尝试添加-> { includes: player}
,因为这是推荐的内容,但我仍然收到错误。谁能解释为什么我还会收到它?
协会
injury.rb
belongs_to :player_extract, -> { includes :player }, class_name: 'PlayerExtract', foreign_key: 'Playerid', primary_key: 'Playerid'
player_extract.rb
belongs_to :player, foreign_key: 'Playerid', primary_key: 'leagueid'
player.rb
has_one :player_extract, class_name: 'PlayerExtract', foreign_key: 'Playerid', primary_key: 'leagueid'
答案 0 :(得分:0)
您应该对所有数据使用预先加载来解决问题。
从简短的检查来看,您似乎在includes
上使用injury.rb
指令,但player_extract.rb
上没有{ - 1}},因此只要Player
在PlayerExtract
时就会延迟加载joins
1}}用于访问实际数据。
看看这些链接:
我可能会考虑使用includes
(here)或has_one
指令的专用范围...我不确定将指令放在关系声明中( {{1}}等等#39;)是最好的方法。