我正处于构建应用程序的计划阶段,所有用户(已注册或未注册)都可以每分钟投票一次。投票窗口应持续一段时间(例如1个月)。此时定义了获胜实体,投票期间重置并重新开始。然后,访客可以留下关于该期间获胜者的评论。 我的问题是您认为设置此类内容的最佳方法是什么?
以下是我目前的想法,但似乎并不理想:
1)投票模型:entity_id,contest_id,user_id(可选),created_at,ip_address
2)比赛模型:开始和结束日期时间
3)获胜者模型:contest_id,entity_id
答案 0 :(得分:0)
在不知道更多细节的情况下,我会采用以下方式:
class User
has_many :votes
has_many :comments
has_many :contests, :through => :votes
class Vote
belongs_to :user
belongs_to :contest
class Contest
has_many :votes
has_many :users, :through => :votes
class Comment
belongs_to :user
这样,您可以拥有@user.votes, @contest.votes, @contest.users
等
我认为不需要Winners模型,因为它只能是用户中的布尔值。如果您需要,您可以随时拥有一个属于用户和竞赛的奖金模型来链接这两者。
希望有所帮助。