-1
def create
  @author = User.find(current_user)
  pub_params = params[:publication]
  ##
  #bcids = pub_params['categorizations_attributes']['0']['book_category_id']
  #pub_params.delete('categorizations_attributes')
  #pub_params['categorizations_attributes'] = Hash.new()
  #bcids.each_with_index do |i, bcid|
  #  if i.to_i > 0
  #    pub_params['categorizations_attributes'][i] = Hash.new()
  #    pub_params['categorizations_attributes'][i]['book_category_id'] = bcid
  #  end
  #end
  @publication = @author.publications.new(pub_params)
  #setup_sti_model

  respond_to do |format|
    if @publication.save
      format.html { redirect_to @publication, notice: 'Publication was successfully created.' }
      format.json { render json: @publication, status: :created, location: @publication }
    else
      format.html { render action: "new" }
      format.json { render json: @publication.errors, status: :unprocessable_entity }
    end
  end
end

# PUT /publications/1 # PUT /publications/1.json

每当我尝试添加新出版物时,我都会收到此错误。

4

3 回答 3

2
attr_accessible :category_id

第 6 节 集体分配

http://guides.rubyonrails.org/security.html

于 2013-05-04T19:22:15.210 回答
1

在您的模型中使用

attr_accessible :category_id

阅读thisthis以了解使用它的原因。您正在授予向该字段写入数据的权限。

于 2013-05-04T19:14:10.517 回答
0

不要打死马,但其他两个响应者是正确的。为了防止批量分配漏洞,您需要明确说明可以批量更新哪些字段。

您还可以使用 attr_protected 为无法批量更新的字段设置黑名单,但通过 attr_accessible 列入白名单是首选方法。

于 2013-05-04T20:43:29.363 回答