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 からの投票を 2 回続けて単純にブロックすることです。したがって、たとえば、私の IP が123.123.123.123
何かに投票した場合、同じ IP アドレスから同じ提案に再度 (上または下に) 投票することはできませんでした。
これは非常に単純で、投票率を制限する絶対確実な方法とは言えません。とはいえ、これから使う環境ではほぼパーフェクト!
これが機能したら、投票のタイムスタンプ用に別の列を追加する予定です。その後、5 分が経過した後に同じ IP からの投票のみを許可するなどのことができます。
アドバイスをいただければ幸いです。