我的 Rails 3 应用程序控制器中有以下代码:
def like
@suggestion = Suggestion.find(params[:id])
@suggestion.voteip = request.env['REMOTE_ADDR']
@suggestion.update_attribute(:votes, @suggestion.votes + 1)
redirect_to suggestions_url
end
def dislike
@suggestion = Suggestion.find(params[:id])
@suggestion.voteip = request.env['REMOTE_ADDR']
@suggestion.update_attribute(:votes, @suggestion.votes - 1)
redirect_to suggestions_url
end
如您所见,代码将投票整数递增/递减 1,并将用户 IP 地址添加到名为voteip
.
我想要实现的是一个简单的阻止来自同一 IP 的投票连续两次。因此,例如,如果我的 IP 是123.123.123.123
并且我对某事进行了投票,那么我就不能从同一个 IP 地址再次对相同的建议(向上或向下)投票。
这是一种非常简单且远非万无一失的限速投票方法。虽然,在将要使用的环境中,它几乎是完美的!
一旦我完成了这项工作,我计划为投票时间戳添加另一列,然后我可以做一些事情,比如只允许在 5 分钟后从同一个 IP 投票。
任何意见,将不胜感激!