【发布时间】:2012-03-28 14:09:41
【问题描述】:
我正处于构建应用程序的计划阶段,所有用户(无论是否注册)都可以每分钟左右投票一次。投票窗口应持续一段时间(例如 1 个月)。在这一点上,一个获胜的实体被定义,投票期重置并重新开始。然后,参观者可以留下关于该时期获胜者的 cmets。 我的问题是你认为设置这样的东西的最佳方法是什么?
这是我目前的想法,但似乎并不理想:
1) 投票模型:entity_id、competition_id、user_id(可选)、created_at、ip_address
- 在 db 中搜索新投票的 ip 并查看时间差异是否大于用户投票之间允许的投票时间限制
- 对每个可变票数使用 CAPTCHA 以确保人为
- 通过计算竞赛实体的所有条目来计算当前投票数
2) 竞赛模式:开始和结束日期时间
- 每周或每月 cron 作业创建最新实例
- 如果当前日期在这 2 个日期之间,则投票可找到当前比赛
- 个人模型允许为比赛创建属性(例如,特殊类型的比赛)
3) 获胜者模型:contest_id、entity_id
- 允许用户对过去的比赛获胜者进行 cmet
【问题讨论】:
-
最佳方式是什么意思?建筑学?使用什么语言来实现它?
-
架构。我将使用 ROR。我在上面展示了我正在考虑的模型/数据库结构。我的问题是有更好的方法来构建它吗?
标签: ruby-on-rails voting