【发布时间】:2012-08-10 17:49:07
【问题描述】:
我的 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 投票。
任何建议将不胜感激!
【问题讨论】:
标签: ruby-on-rails-3 controller ip limit vote