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存储在数据库中,而不是在需要时将其存储,原因有多种。
答案 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