簡體   English   中英

重構代碼以避免N + 1查詢

[英]refactor code to avoid N+1 query

我有這樣的聯想

models/transcription.rb

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

class TranscriptionStatus < ActiveRecord::Base
  has_many :transcriptions, :inverse_of => :transcription_status
end

問題

每次我調用transcription_status它都會執行N+1查詢。 建議我重構該代碼以防止N+1查詢限制的方法?

謝謝

您必須使用includes來預加載數據:

Transscription.includes(:transcription_status)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM