2011-03-17 103 views
1

所以我正在实现一个上/下投票机制,我正在生成一个模型。到目前为止,我明白一个视频(将被投票)有一个vote_count,而vote_count属于视频。不过,我也想在我的vote_count数据库中追踪投票视频的用户。这是否意味着一个vote_count有许多用户,并且一个用户属于vote_count?模型关联问题

回答

5

它可能会更容易跟踪票作为独立的记录,像这样的:

class VideoVote < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :video 
end 

class User < ActiveRecord::Base 
    has_many :video_votes 
    has_many :voted_videos, 
    :through => :video_votes, 
    :source => :video 
end 

class Video < ActiveRecord::Base 
    has_many :video_votes, 
    :counter_cache => true 
    has_many :voted_users, 
    :through => :video_votes, 
    :source => :user 
end 

如果你有投票人上下,您将需要以某种方式跟踪净投全中。这可能很棘手,所以你可能想要寻找一个投票插件。

+1

+1。我正在写同一篇文章。你所描述的@Justin只会允许用户对一个视频进行投票。您需要跟踪(a)哪个用户投票选择哪个视频,(b)他们在投票时如何投票(上或下)和(可能)(c)。 – Nuby 2011-03-17 17:32:26

+0

谢谢!什么是':counter_cache => true'? – 2011-03-17 17:36:42

+0

另外还有两件事:1.请确定,我需要在视频模型中添加'has_many:videos'到用户模型,'belongs_to:user'?其次,我会在控制器中制作一个upvote方法和一个downvote方法吗? – 2011-03-17 17:39:03

-1

我在这里错过了什么吗?为什么不分配netVoteTally作为Videos的财产。当调用video.new并将incNetVideoTallydecNetVideoTally方法在视频方法之外访问时,将其初始化为0?只是我的0.02美元。

+0

我希望能够知道哪个用户对视频进行投票,因此需要拥有丰富的多对多关联的自己的模型。它还为我提供了向用户展示不同内容的最大灵活性,例如所有投票视频的用户或投票者投票的所有视频。 – 2011-03-17 18:58:37

+0

似乎我把我的答案放在了这个线程的错误位置。我对塔德曼对自己的良好回答的评论更为回应,他提到跟踪净票总数可能会非常棘手。道歉。 – 2011-03-17 19:53:39