0

我正在为一个“决选”式比赛的网站工作,即选民可以投票给多个候选人,但选民只能为任何个人候选人投票一次。

我的模型是:

  • 候选人

  • 选民

  • 投票

目前,我正在使用Cantor 配对功能根据候选人 ID 和选民 ID 为每次投票创建一个唯一的整数/令牌。我的投票模型验证了这个令牌的唯一性,有效地防止人们为给定的候选人投票不止一次。

尽管我的代码运行良好,但我知道必须有一种方法可以使用 ActiveRecord 关联并绕过数学,但我对 Rails 还是很陌生——任何输入/讨论都将不胜感激!

4

1 回答 1

0

你不能只验证表中的voter_idcandidate_id的唯一性Vote吗?

class Vote < ActiveRecord::Base

  validates_uniqueness_of :voter_id, scope: :candidate_id

end

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

add_index "votes", ["voter_id", "candidate_id"], unique: true
于 2013-05-24T10:30:56.960 回答