1

たとえば、私がブログを運営していて、誰もが記事を読み、コメントを読み、コメントに不適切としてフラグを立てることができるとします。サインインしていないユーザーが [Flag Comment] リンクを複数回クリックできないようにするにはどうすればよいですか?

「フラグ コメント」リンクは、コメント モデルのコントローラー メソッドに直接関連付けられます。

私は、セッションとクッキー (および一般的な Rails) のアイデアに不慣れです。セッションでこれを読みましたが、まだ少し混乱しています。

Guest という Base クラスを作成することを検討しましたが、これを回避して、代わりにセッションまたは Cookie の一時データを利用できるかどうか疑問に思っていました。

前もって感謝します。

4

1 に答える 1

2

基本的なアイデアは次のようになります (申し訳ありませんが、コードはまだありません)。

  1. セッションや Cookie に保存する情報を定義します。フラグが立てられたコメントごとidにすべきだと思います。commentそれらをハッシュのような構造に保存します。
  2. flagging a commentクッキーの内容に応じてリンクを作成します。そんな感じ:

    ...
    = link_to('flag comment', flag_comment_path(comment.id)) if ! cookies[:flagged_comments] || ! cookies[:flagged_comments][comment.id]
    
  3. コメントにフラグが立てられたときに Cookie のハッシュ値を設定します (ここではローカル変数commentを使用します。これはどこかに設定または認識されている必要があります)。

    cookies[:flagged_comments] = Hash.new if ! cookies[:flagged_comments]
    cookies[:flagged_comments][comment.id] = comment.id
    

コードが機能するかどうかはわかりませんが、アイデアは明確なはずです。はい、これは匿名ユーザーに対してのみ行います (より依存性の高い UI およびコントローラー機能)。

もう 1 つ: この情報を保存するためにセッションと Cookie を使用するべきではないと思います。また、誰かが 2 つの異なるセッションでコメントにフラグを立てたときに通知する必要があるため、Cookie のみを使用してください。

于 2011-10-08T19:08:10.973 に答える