使用Rails / ActiveRecord进行径流式投票

时间:2013-05-23 23:16:36

标签: ruby-on-rails activerecord voting

我正在一个网站上进行“决选”式竞选,即选民可以投票选出多名候选人,但选民只能为任何候选人投票一次。

我的模特是:

  • 候选

  • 选举人

  • 表决

目前,我正在使用Cantor pairing function根据候选ID和选民ID为每次投票创建一个唯一的整数/代币。我的投票模型验证了此令牌的唯一性,有效地阻止了人们对特定候选人进行多次投票。

即使我的代码工作得很好,我知道必须有一种方法来使用ActiveRecord关联并绕过数学,但我对Rails很新 - 任何输入/讨论都会受到赞赏!

1 个答案:

答案 0 :(得分:0)

您是否只能验证voter_id表格中candidate_idVote的唯一性?

class Vote < ActiveRecord::Base

  validates_uniqueness_of :voter_id, scope: :candidate_id

end

您也应该为数据库添加索引:

add_index "votes", ["voter_id", "candidate_id"], unique: true