2012-02-15 54 views

回答

2

你可以在surveys表上有questions_count列,它可以用來緩存這個數字。

belongs_to :survey, :counter_cache => true 

但是現在你已經得到了實際調查和問題,你將需要創建此列,然後在:如果你已經在你的Question模型中指定的belongs_to :survey這樣這可以自動完成遷移更新計數是正確的:

def up 
    add_column :surveys, :questions_count, :integer, :default => 0 
    Survey.all.each do |survey| 
    survey.questions_count = survey.questions.count 
    survey.save 
    end 
end 

然後,一旦你有此列,這是一個簡單的查詢AREL發現平均:

Survey.average(:questions_count) 

除此之外,您現在可以自動計算問題,而無需在加載調查之後對問題表執行另一個查詢。如果你想在某處顯示,這將會非常有幫助。