0

ここでは比較的新しいRailsプログラマーなので、我慢してください。

登録ユーザーが投票を作成できるアプリがありますが、誰でも投票に回答できます。

認証にDeviseを使用しています。認証されていないユーザーが投票に回答できるようにしたいのですが、二重投票を防ぎたいです。

これは永続的な(セッションではない)Cookieを使用して実行する必要があると思いますが、よくわかりません。そのため、ユーザーがサイトにアクセスするときに、デバイスでユーザーを作成し、ユーザーモデルとCookieの両方にランダムな値を保存します。ユーザーが自分のユーザーを読み込もうとしたときに、ユーザーが以前に質問に回答していないことを確認します。 「回答」ページ?

誰かがこれが正しいアプローチであるかどうかについてアドバイスをくれたり、私が始めるのに役立つリソースに私を向けたりできますか?

Railsで永続的なCookieを管理する方法についての情報は比較的少ないです。

4

1 に答える 1

0

ログインせずに複数回投票することを確実に防ぐことはできません。それは不可能です。投票するために複数のユーザーアカウントを作成することもできるので、絶対確実な方法はありません。クッキーは、特定の人気のあるクリーナーによって自動的にクリアされることがよくあります。購入した製品に投票することだけを許可する場合を除いて、あなたは敗戦を戦っていると思います。

Stack Overflowは、投票が許可される前に特定のレベルが達成されていることを確認することで投票機能を制限しますが、それは実際にはあなたのシナリオには当てはまらないと思います。

これは、セッションやCookieについてではなく、投票者IDを含む投票を記録するようにデータベースを設定することについてです。

ユーザーが投票できるようにするビューでは、現在ログインしているユーザーが投票したかどうかに応じて、投票済みアイコンと[今すぐ投票]リンクを切り替えることをお勧めします。

ユーザーが投票したかどうかを判断するには、現在ログインしているユーザーのユーザーIDをquestion_vote外部参照テーブルに含めます。

ブラウザでのhtmlの乱用を防ぐためのベルトとブレースのアプローチについては、question_voteレコードの検証にチェックを追加してください。

can_voteを追加してこれを行いますか?質問IDをパラメーターとして受け入れるユーザーモデルへのメソッド。次に、question_idとユーザーIDを使用して、reordxが見つかった場合はquestion_voteテーブルで一致するレコードを検索し、それ以外の場合はtrueを返します。

于 2012-09-18T15:06:16.637 に答える