Rails 3.2.12无法批量分配受保护的属性

时间:2016-04-26 09:06:16

标签: ruby-on-rails activerecord mass-assignment

这是我的RubyOnRails应用程序。我有一个ActiveRecord:

class Deposit < ActiveRecord::Base
    attr_accessible :fk, :abs_kod, :neres
    ...
end

我也有一个带代码的控制器:

list.each do |d_item|
      deposit = Deposit.find_or_create_by_fk(d_item[:fk])
      deposit.update_attributes d_item
end

但我无法将任何价值保存到“neres”字段中。我收到了一个错误

Can't mass-assign protected attributes: neres

在我的数据库中,我看到了

|  fk  | abs_kod |  neres |
|  1   | 1       |        |

我试着这样做

deposit = Deposit.find_or_create_by_fk(d_item[:fk])
deposit.neres = d_item[:neres]
deposit.update_attributes d_item
deposit.neres = d_item[:neres] //twice, just in case

我没有帮助。我还试图从活动记录中删除attr_accessible。它也没有帮助。有什么问题?

P.S。:Attribure“neres”的添加时间晚于“abs_kod”和“fk”。

1 个答案:

答案 0 :(得分:0)

要在低于版本4的Rails应用程序中使用强params,您需要将gem添加到您的gem文件

gem 'strong_parameters'

并在config中的application.rb文件中将whitelist_attributes设置为false

config.active_record.whitelist_attributes = false

在控制器中,请务必添加model_params方法并列出需要列入白名单的属性。