我正在一个网站上进行“决选”式竞选,即选民可以投票选出多名候选人,但选民只能为任何候选人投票一次。
我的模特是:
候选
选举人
表决
目前,我正在使用Cantor pairing function根据候选ID和选民ID为每次投票创建一个唯一的整数/代币。我的投票模型验证了此令牌的唯一性,有效地阻止了人们对特定候选人进行多次投票。
即使我的代码工作得很好,我知道必须有一种方法来使用ActiveRecord关联并绕过数学,但我对Rails很新 - 任何输入/讨论都会受到赞赏!
答案 0 :(得分:0)
您是否只能验证voter_id
表格中candidate_id
和Vote
的唯一性?
class Vote < ActiveRecord::Base
validates_uniqueness_of :voter_id, scope: :candidate_id
end
您也应该为数据库添加索引:
add_index "votes", ["voter_id", "candidate_id"], unique: true