Ruby on rails 3 这容易受到大规模分配的影响吗?
我使用此选项允许用户对条目进行投票:Ruby on rails 3 这容易受到大规模分配的影响吗?,ruby-on-rails-3,security,mass-assignment,Ruby On Rails 3,Security,Mass Assignment,我使用此选项允许用户对条目进行投票: <% 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 =>
<% 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 %>
我有两个问题
当前用户.id
attr\u accessible
或attr\u protected
。我应该如何确保模型的安全性,以确保某人不能创造大量选票?现在,投票模型中的所有字段都由params
散列设置——我是否应该使用attr\u protected
比如entry\u id
外键,然后在控制器中单独设置它这方面的一个很好的参考可以在。构建投票时,为什么不将当前用户合并到参数中呢?此时用户的会话是否无效?否,但我不确定语法,因为我正在使用entry实例构建投票。因此,如果我仅将
attr\u accessible
添加到安全选项中(除了“entry\u id”…那么在控制器中,如何设置和保存“entry\u id”参数散列之外?上面链接的指南第6.1节显示了显式设置的属性。由于您不允许用户直接从散列设置属性,因此您可能会检查散列值,验证它,然后将验证值应用于属性。
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