我有下面的代碼在我的Rails 3應用程序:保存在Rails 3中的遞增整數?
def like
@suggestion = Suggestion.find(params[:id])
Suggestion.update_all("votes = (votes + 1)")
redirect_to suggestions_url
end
def dislike
@suggestion = Suggestion.find(params[:id])
Suggestion.update_all("votes = (votes - 1)")
redirect_to suggestions_url
end
它的工作,但不是更新當前建議,它更新了他們。所以,我把它改爲:
def like
@suggestion = Suggestion.find(params[:id])
@suggestion.update_all("votes = (votes + 1)")
redirect_to suggestions_url
end
def dislike
@suggestion = Suggestion.find(params[:id])
@suggestion.update_all("votes = (votes - 1)")
redirect_to suggestions_url
end
但後來我得到:
undefined method `update_all' for #<Suggestion:0x007f87c2b918a0>
於是我試着@suggestion.update_attribute(:votes, '1')
但該值重置爲1,而不是增加它的。
實現此目標的正確方法是什麼?我只想讓當前建議的整數(票數)在每次保存時增加/減少1。
我也試過,沒有運氣以下:
def like
@suggestion = Suggestion.find(params[:id])
@suggestion.increment(:votes)
redirect_to suggestions_url
end
建議是 @suggestion is the object – 2012-08-10 16:59:22