Rails:如何在创建后平均多个数据库条目

时间:2012-01-21 23:48:03

标签: ruby-on-rails database-design average

Rails 3.1

我会简化我的申请以解决我的问题。

我有两个表:项目和评论

项目有一列“Average_Rating”,而评论有一列“Item_ID”和“评分”

对于每件商品,我想存储其相应评论的平均评分。虽然我无法理解,但我觉得我想要做的是在评测控制器中添加一些创建和更新方法:

@review = Review.find(params[:id])
@item = Item.find(@review.Item_ID)

reviews_to_sum = Reviews.find_by_item_id(@item.id)
@item.Average_Rating = reviews_to_sum.Rating.sum/reviews_to_sum.count
然而,我知道,上面的内容可能并不接近正确......我是初学者而且我被卡住了。

我确实希望将Average_Rating存储在数据库中,而不是在需要时将其存储,原因有多种。

1 个答案:

答案 0 :(得分:3)

class Item < ActiveRecord::Base
  has_many :reviews
end

class Review < ActiveRecord::Base
  belongs_to :item

  after_save do
    item.update_attributes average_rating: item.reviews.average(:rating)
  end
end