我剛剛更改了操作中competitors_controller.rb
從...這是渴望加載做我認爲它應該做什麼?
def audit
@review = Review.find(params[:review_id])
@competitor = @review.competitors.find(params[:id])
respond_with(@review, @competitor)
end
...到...
def audit
@review = Review.find(params[:review_id])
@competitor = Competitor.find(params[:id], :include => {:surveys => {:question => [:condition, :precondition]}})
respond_with(@review, @competitor)
end
...在頁面上被加載超時。
底層的關聯是:
class Competitor < ActiveRecord::Base
has_many :surveys
end
class Survey < ActiveRecord::Base
belongs_to :competitor
belongs_to :question
delegate :dependencies, :precondition, :condition, :to => :question
end
class Question < ActiveRecord::Base
has_many :dependancies, :class_name => "Question", :foreign_key => "precondition_id"
belongs_to :precondition, :class_name => "Question"
has_many :surveys, :dependent => :delete_all
end
基本上,audit.html.haml頁面加載:
@competitor.surveys.{sorting, etc}.each do |s|
s.foo, s.bar
s.{sorting, etc}.dependant_surveys.each do |s2|
s2.foo, s2.bar
s2.{sorting, etc}.dependant_surveys.each do |s3|
s3.foo, s3.bar, etc etc
如果我窩太遠,頁面沒有之前加載時間出。
我需要知道的是,我是否已經在competitor_controllers.rb
理論上加速了以下兩種方法中的每一種,在構建audit.html.haml
時經常調用這些方法?
class Survey < ActiveRecord::Base
def dependant_surveys
self.review.surveys.select{|survey| self.dependencies.include?(survey.question)}
end
end
class Question < ActiveRecord::Base
def dependencies
Question.all.select{|question| question.precondition == self}
end
end
(我說「理論上」,因爲我知道這個問題也可以用基準的回答。但在此之前我走到這一步我想檢查我的理論正確的。)