私は、ユーザーがエントリに投票できるようにするためにこれを使用する:これは質量割り当てに脆弱ですか?
<% form_tag url_for(entry_votes_path(@entry)), :id => 'voting_form', :remote => true do %>
<%= hidden_field_tag 'vote[user_id]', current_user.id %>
<%= submit_tag 'Vote for this entry', :id => 'voting_button' %>
<% end %>
これは私のコントローラのコードです:
def create
@entry = Entry.find(params[:entry_id])
@vote = @entry.votes.build(params[:vote])
respond_to do |format|
if @vote.save
format.html { redirect_to @entry }
format.js
end
end
end
私は2つの質問
私はcurrent_user.id
を割り当てることができますどのように
を持っています隠しフィールドを使わずに?
また、私は今投票モデルで
attr_accessible
またはattr_protected
を使用していません。誰かがたくさんの票を作ることができないように、モデルを保護するにはどうしたらよいですか?現在、投票モデルのすべてのフィールドは、params
ハッシュによって設定されています。attr_protected
、つまりentry_id
という外部キーを使用し、それをコントローラーで個別に設定する必要がありますか?
投票を作成するときにcurrent_userをparamsにマージしてみませんか?この時点でユーザーのセッションは無効ですか? –
いいえ、私はエントリーインスタンスで投票を構築しているので、構文がわかりません。 – Slick23