2

投票者の ip_address によって投票が制限される投票システムを実装しようとしています。

many_votes を持つ投稿モデルがあり、投票は投稿モデルに属しています。

私の質問は、「current_user」を定義する方法と場所、およびこれをビューに実装する方法です。

現在、私は次のような投票を作成しています:

<%= link_to(post_votes_path(post), :method => 'post') do %>
<%= song.votes.size %>

誰でも投票できる以外は問題なく動作し、それを止めたいと思います。この機能をゼロから学ぼうとしているだけの宝石を探しているのではありません。

乾杯。

ここに私の投稿コントローラーコードがあります:

def create
@post = Post.new(params[:post])

respond_to do |format|
  if @post.save
    format.html { redirect_to root_url, notice: 'Post was successfully created.' }
  else
    format.html { render action: "new" }
  end
end
end

create アクションの投票コントローラー コード:

def create
@post = Post.find(params[:post_id])
@vote = @post.votes.create
respond_to do |format|
  format.html { redirect_to root_url }
  #format.js 
end
end
4

2 に答える 2

1

投票テーブルにはip、一意の検証制約を持つ列が必要です。次に、IP ごとに複数の投票を記録しようとすると、コントローラーの保存が失敗します。これを検出してエラーをフラッシュするために使用できます。より良い回答を得るには、コントローラー コードを投稿する必要があります。

于 2013-07-04T20:36:18.393 に答える