2012-02-15 31 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) 

除此之外,您现在可以自动计算问题,而无需在加载调查之后对问题表执行另一个查询。如果你想在某处显示,这将会非常有帮助。