Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重构代码以避免N+;1查询_Ruby On Rails_Ruby_Ruby On Rails 3.2 - Fatal编程技术网

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)
读啊读啊读啊读啊读啊读