导轨和上/下评级系统

时间:2012-02-25 14:01:50

标签: ruby-on-rails database postgresql

抱歉,如果它重复,我在发布之前一直在寻找类似的东西,但没有成功。

所以基本上我需要一个上/下评级系统(它与stackoverflow上的那个非常相似)。

我有6个应率模型,因此多态关联似乎是最好的选择。 但由于此表可能会保留大量记录,因此获取项目评级(upvotes_count - downvotes_count)不会花费太多时间吗?

我实际上是在为每个可评估模型添加一个新行,例如current_rating_value。因此,每次创建/销毁评级对象时,都会更改此值。

请您指点一下,在这种情况下可能有更好的选择吗?额外的UPDATE调用更改current_rating_value或额外的SELECT(SUM ...)调用来计算它?

2 个答案:

答案 0 :(得分:1)

对于长期性能,您应该在每个ratable模型中添加类似current_rating_value的内容。每当有新费率时,只需更新此字段即可。

否则,每次必须计算评级时,它对性能非常有害。

答案 1 :(得分:1)

根据您加载这些模型所需的流量,它可以根据需要对资源征税。我在我的项目中最终使用了acts_as_votable gem。它很容易使模型可以投票,它也可以缓存数据,这也是很棒的。