Rails 4评级内部模型

时间:2015-03-23 17:11:04

标签: ruby-on-rails rating

我对Rails很陌生,并想知道用户评级系统最适合的选项是什么:

user has_many reviews

每篇评论都包含评分。

为了显示评论计数和平均评分,最好将这些列添加到用户模型并通过评论模型上的after_save回调更新它们,或者只是定义将使用COUNT和AVERAGE但会命中的函数DB每次?

1 个答案:

答案 0 :(得分:2)

最好添加列,特别是如果您对它们进行排序或在列表中显示它们。

同意@Halogen

的列定义

我倾向于将这些方法放在after_save上的方法中,以确保首先有效保存所有对象。

after_save :set_reviews_average, set_reviews_count

# Note: update_column won't trigger callbacks

def set_reviews_average
  update_column(:reviews_average, reviews.average(:rating)) 
end

def set_reviews_count
  update_column(:reviews_count, reviews.count) 
end