0
我有一個Survey
模型和每個調查has_many questions
和每個question belongs_to survey
。我如何得到「孩子」記錄的平均數量?
我想要做的是找到每個調查的平均問題數量。
最簡單的方法是什麼?
我正在運行Rails 3.0.9和Ruby 1.8.7。
我有一個Survey
模型和每個調查has_many questions
和每個question belongs_to survey
。我如何得到「孩子」記錄的平均數量?
我想要做的是找到每個調查的平均問題數量。
最簡單的方法是什麼?
我正在運行Rails 3.0.9和Ruby 1.8.7。
你可以在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)
除此之外,您現在可以自動計算問題,而無需在加載調查之後對問題表執行另一個查詢。如果你想在某處顯示,這將會非常有幫助。