Ruby on rails 重构代码以避免N+;1查询
我有这样的联想Ruby on rails 重构代码以避免N+;1查询,ruby-on-rails,ruby,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3.2,我有这样的联想 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
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
class TranscriptionStatus < ActiveRecord::Base
has_many :transcriptions, :inverse_of => :transcription_status
end
问题
每次我调用transcription\u status
时,它都在执行N+1
查询。建议我如何重构此代码以防止N+1
查询限制
谢谢您必须使用
包含
来预加载数据:
Transscription.includes(:transcription_status)
您必须使用
包含来预加载数据:
Transscription.includes(:transcription_status)
您必须使用包含来预加载数据:
Transscription.includes(:transcription_status)
您必须使用包含来预加载数据:
Transscription.includes(:transcription_status)
读啊读啊读啊读啊读啊读