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