[英]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.