这是我的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”。
答案 0 :(得分:0)
要在低于版本4的Rails应用程序中使用强params,您需要将gem添加到您的gem文件
gem 'strong_parameters'
并在config中的application.rb文件中将whitelist_attributes设置为false
config.active_record.whitelist_attributes = false
在控制器中,请务必添加model_params方法并列出需要列入白名单的属性。