【发布时间】:2011-12-20 02:06:33
【问题描述】:
使用 Ruby 1.9.2、Rails 3.1。我有以下代码:
# review.rb
def calculate_rating(reviewable)
total_rating = Review.select("rating").where(:reviewable_id => self.reviewable_id)
sum_rating = total_rating.sum(:rating)
new_rating_average = sum_rating.to_f / total_rating.size
reviewable.update_attribute(:rating_average, new_rating_average)
end
total_rating 实际上用于获取返回的评分总数,而sum_rating 用于对每个total_rating 求和。我注意到我的查询运行了多次以获得结果。
有没有办法重构它以提高性能?
谢谢。
【问题讨论】:
标签: ruby ruby-on-rails-3