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