首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构代码以避免N+1查询

重构代码以避免N+1查询
EN

Stack Overflow用户
提问于 2014-06-25 07:57:53
回答 1查看 94关注 0票数 0

我有这样的协会

models/transcription.rb

代码语言:javascript
复制
class Transcription < ActiveRecord::Base
  belongs_to :transcription_status, :class_name => "TranscriptionStatus",
    :inverse_of => :transcriptions


  # Initialize to "new" status if a status isn't already set
  def setup_status
    if transcription_status.nil?  # this method is taking lots of execution time ( N + 1 )
      status = TranscriptionStatus.find_by_state("new")
      if status
        self.transcription_status = status
      end
    end
  end
end

models/transcription_status.rb

代码语言:javascript
复制
class TranscriptionStatus < ActiveRecord::Base
  has_many :transcriptions, :inverse_of => :transcription_status
end

问题

每次我调用transcription_status时,它都在执行N+1查询。建议我如何重构这段代码以防止N+1查询限制?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 08:07:03

必须使用includes预加载数据:

代码语言:javascript
复制
Transscription.includes(:transcription_status)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24403185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档