现在,我正在在 Ruby on Rails 上构建一个社交媒体应用程序,我已经实现了一个 5 点投票系统。您可以在哪里对 1-5 发布在网站上的新闻进行投票,我想知道的是,处理投票系统更新的最佳方法是什么。
例如。如果用户已经在一篇文章中投票,我想带回他在文章中给出的分数并软锁定投票(因为我只允许每个用户投 1 票,并且我允许随时更改您的投票),但是如果他还没有,我会以 0 的投票提出这篇文章。
我知道实现这一点的方法,我可以在视图中进行,并检查当前用户是否已经对这篇文章进行了投票,我会将他们发送到 EDIT 视图,否则发送到 SHOW 视图。(我认为)
无论如何,这样做的“正确”方法是什么?
编辑:我忘了说投票组合框是我渲染的一部分。我想只是以某种方式更新部分吗?
编辑2:
class Article < ActiveRecord::Base
has_many :votes
belongs_to :user
named_scope :voted_by, lambda {|user| {:joins => :votes, :conditions => ["votes.user_id = ?", user]} }
end
class User < ActiveRecord::Base
has_many :articles
has_many :votes, :dependent => :destroy
def can_vote_on?(article)
Article.voted_by(current_user).include?(article) #Article.voted_by(@user).include?(article)
end
end