Rails 4 评级内部模型
Rails 4 Rating Inside Model
我对 Rails 很陌生,想知道哪种选项最适合用户评级系统:
user has_many reviews
每条评论都包含一个评分。
为了显示评论数和平均评分,将这些列添加到用户模型并通过评论模型上的 after_save 回调或简单地定义将使用 COUNT 的函数来更新它们是否更好?和平均水平,但每次都会达到数据库?
添加列当然更好,尤其是在对它们进行排序或在列表中显示它们时。
同意@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
我对 Rails 很陌生,想知道哪种选项最适合用户评级系统:
user has_many reviews
每条评论都包含一个评分。
为了显示评论数和平均评分,将这些列添加到用户模型并通过评论模型上的 after_save 回调或简单地定义将使用 COUNT 的函数来更新它们是否更好?和平均水平,但每次都会达到数据库?
添加列当然更好,尤其是在对它们进行排序或在列表中显示它们时。
同意@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