Rails 3 - 投票作为一个整数值(增加)或作为数据库中的投票列表/数量?

时间:2012-05-26 17:04:07

标签: ruby-on-rails

我是Rails的新手,目前正在制作一个应用程序,我的同学/同学可以就主题/问题(与我们相关)发表评论,并且每个评论都应该可以进行投票。

我为“upvote”和“downvote”创建了一个自己的模型。

现在,在数据库中,我想知道,如果两个投票模型都有一个可以增加的整数,那么在我的控制器操作中它将是...... + = 1. - 或者它应该是一个列表/投票集合,只需用.count方法计算,以显示upvote或downvote值?

2 个答案:

答案 0 :(得分:2)

Rails有一个名为counter_cache的功能,用于在创建/销毁时自动计算相关模型的数量。这是关于它的:http://guides.rubyonrails.org/association_basics.html第4.1.2.4节。它是通过DB中的额外列完成的。

答案 1 :(得分:1)

我认为您选择的选项取决于您的应用程序的要求。

  • 单个整数
    • 如果您不需要与投票相关的任何其他信息,我只需将其存储为模型中的单个整数。
  • 记录每次投票
    • 如果您想在投票时存储其他信息,例如每次投票的人和时间,那么您可以创建每次投票的记录。然后你可以在模型上做一个.size(推荐size over count for performance reasons ......或者甚至更好,使用jdoe指出的counter_cache)。

话虽如此,从你的应用程序的描述来看,我认为upvotes和downvotes不一定需要他们自己的模型。我会在您的评论模型上为upvotes和downvotes创建一个属性,并使用一个整数来表示投票计数。