我正在试图弄清楚如何使用acts_as_votable gem来实现具有一对多关系的投票系统。我有AgendaItem
模型,其中包含许多Conclusion
个项目。 Conclusion
可以由用户投票,但他们只能投一票。如果他们投票给第二个结论,就需要改变他们的投票。
有没有办法实现这个,而无需手动检查用户是否已经投票选择conclusion
对象?文档似乎只涵盖对单个对象的投票,并不包括类似于此的场景,除非我遗漏了某些内容
答案 0 :(得分:0)
您可能希望尝试修补ActsAsVotable::Vote
以包含uniqueness validation票数。
module ActsAsVotable
class Vote < ::ActiveRecord::Base
validates_uniqueness_of :voter_id, scope: [:votable_id],
if: Proc.new { |vote| vote.votable_type == "Conclusion" && vote.voter_type == "User" }
end
end
您需要在数据库上添加唯一索引:votable_type,:voter_type,:votable_id和:voter_id,以最大限度地降低性能损失。