0
所以我试图建立我在这个问题上所问:Fix voting mechanism为什么这个Ruby on Rails代码不能像我打算的那样工作?
但是,此解决方案不起作用。用户仍然可以多次投票他或她想要的。我如何解决这个问题和/或重构?
def create
@video = Video.find(params[:video_id])
@vote = @video.video_votes.new
@vote.user = current_user
if params[:type] == "up"
@vote.value = 1
else
@vote.value = -1
end
if @previous_vote.nil?
if @vote.save
respond_to do |format|
format.html { redirect_to @video }
format.js
end
else
respond_to do |format|
format.html { redirect_to @video }
format.js {render 'fail_create.js.erb'}
end
end
elsif @previous_vote.value == params[:type]
@previous_vote.destroy
else
@previous_vote.destroy
if @vote.save
respond_to do |format|
format.html { redirect_to @video }
format.js
end
else
respond_to do |format|
format.html { redirect_to @video }
format.js {render 'fail_create.js.erb'}
end
end
end
@previous_vote = VideoVote.where(:video_id => params[:video_id], :user_id => current_user.id).first
end
什么该理由是零?为什么将它移到模型中?代码如何看待模型? – 2011-03-19 08:26:58
我已经更新了我的原始答案。 – lebreeze 2011-03-19 08:35:57
如果投票未通过验证,它是否会默默失败?另外,何时验证运行?当我尝试将投票保存到数据库中时? – 2011-03-19 08:44:36